HDR竟有這些大坑?電腦播HDR的正確姿勢你知多少

最近兩年HDR這個概念可謂是鋪天蓋地而來,手機也好PC也好電視也好,都拚命往自己頭上扣HDR的帽子。而在某些發燒友眼中,如果看片子不帶HDR,堪比步兵變騎兵,一下子變得索然無味。然而,新事物往往也伴隨著眾多新坑,特別是在軟硬體環境複雜的PC平台,稍有不慎就會摔得臉青鼻腫,播HDR的效果甚至不如播普通的片子。

PC播HDR的大坑有幾何?PC並不是專門為視頻播放設計的機器,和專業的藍光機等播放器相比,無論是在解碼還是渲染還是輸出方面,在沒有一套一鍵式安裝的成熟方案(傻瓜萬能播放器等)出現之前,往往需要用戶自己手動詳細配置每個環節。硬體方面的環節,例如HDMI線纜版本等等,以往已經說得比較多了。今天,就一起來談談軟體方面播放HDR視頻需要注意什麼吧。

正確處理YUV和RGB色彩

如果你有留意過視頻文件的參數,應該會知道視頻的色彩編碼有不同的類型,最常見的莫過就是YUV和RGB。這到底都意味著什麼呢?在數字時代,要讓計算機能辨認出自然界的顏色,就需要對顏色進行編碼。在RGB體系中,顏色是用紅、綠、藍三種參數來表示的,例如在PhotoShop中我們可以看到純紅色的編碼是(255,0,0)。

PhotoShop支持多種色彩空間,例如RGB、CMYK等

RGB並不是唯一顏色編碼的方法,顏色不僅僅可以用紅綠藍來混合顯示,還可以用明度、色度和濃度來表示,這種明度色度濃度的顏色編碼方式就是YUV了。或許有的朋友會問,RGB效果就很好,現在連機箱裡面的光污染都用RGB燈,為什麼顏色的編碼要搞這麼多套體系?這和顯示介質是息息相關的。

在PC上我們用的電腦屏幕是液晶屏或者OLED屏幕,發色基礎是RGB三原色像素點,於是配合RGB的色彩空間,能夠比較完美地將數字信號轉換成為可見光。但在電視機上,RGB就不一定適用了。和電腦顯示器相比,電視的歷史更悠久,古老的電視例如黑白電視,顯然是無法兼容RGB信號的。如果使用的是YUV色彩空間,情況就不同了,黑白電視只需顯示YUV色彩空間的明度信號即可完美兼容。由於這個歷史原因,視頻特別是源於光碟、廣播電視信號的視頻,基本上都使用YUV色彩空間,直到今天也依然如此。

配合電視工作的設備,一般支持輸出YUV,例如PS4

現在的HDR視頻不少都來源於UHD BD光碟,因此將YUV信號轉換成為RGB信號,也成為了HDR視頻播放當中必不可少的一環。但遺憾的是,Windows自帶的EVR渲染器(Enhanced Video Renderer)在這方面的表現不怎麼理想,如果解碼器輸出YUV信號到EVR進行渲染,那麼EVR只會進行低精度的轉換,大大影響畫質。HDR視頻的色彩較為豐富,負面影響尤為明顯。

要如何來解決這個問題呢?有兩個思路。

第一個思路,讓解碼器只輸入RGB 8bit信號到EVR中,不讓EVR參與YUV→RGB的轉換。我們需要藉助LAV解碼器來實現這點。

視頻播放器要播放一個視頻,流程通常是視頻分離器(分離視頻流、音頻流、字幕等)→解碼器(解碼視頻、音頻)→渲染器(渲染出最終圖像),YUV轉換成RGB這一步,可以發生在解碼步驟當中,也可以發生在渲染步驟當中。既然渲染器不給力,那就讓解碼器來做。

LAV是目前PC上最強勁的解碼器,可貴的是它是開源免費的。我們可以點此進入LAV的GitHub項目中下載相應版本,可以下載安裝包也可以下載ZIP包的綠色版。

按照實際情況和個人喜歡選擇最新版即可

如何讓播放器使用LAV解碼?以PotPlayer為例,在PotPlayer的「全局濾鏡優先權」一欄,添加系統濾鏡或者外部濾鏡(取決於你使用LAV安裝包還是綠色版,下文以綠色版為例)。將LAV綠色版壓縮包解壓到一個文件夾,目錄不要含中文,添加當中的「LAVVideo.ax」就可以添加LAV視頻解碼器了。

找到PotPlayer的「全局濾鏡優先權」

添加「LAVVideo.ax」為外部濾鏡

接著,將PotPlayer當中的「LAV Video Decoder」設置為強制使用,雙擊進入設置。

選擇「強制使用」

可以在「Output Formats」一欄看到各種輸出格式。這時候只勾選RGB32、RGB24兩個即可,其他都取消勾選。保存設置,如此一來播放器解碼的時候就只會輸出RGB 8bit信號,EVR渲染器就不會做低質量的轉換處理了。

只保留8-bit的RGB輸出

第二個思路,就是換用更好的渲染器,例如madVR。madVR是PC上畫質最好的視頻渲染器,可以高質量地處理YUV→RGB轉換。關於madVR渲染器的使用將會在下面提到,這裡先不詳細展開。

如何順利解碼10bit

如果大家有留意,應該會發現很多HDR視頻的色深都是10bit。現在流行的視頻普遍以8bit居多,10bit視頻對比8bit,灰階更加平滑,同樣畫質的視頻體積更小,但與此同時解碼所需要的性能也提高了不少。

10bit對畫質的提升是有正面意義的,為什麼HDR視頻會使用10bit?這主要還是因為藍光聯盟的推動。HDR視頻之所以流行,是由於在2015年藍光聯盟正式確定了UHD BD的規格,之後兩三年越來越多的片子推出了UHD BD碟片。而UHD BD內的片子規格有幾個關鍵點,分別是H.265(HEVC)的編碼,10-bit色深以及HDR色彩(高達BT.2020色域)。因此,10bit色深這個規格越來越多地出現在了各種視頻當中。

一個典型的原盤HDR視頻,參數包括HEVC編碼、10bit色深、BT.2020色域、YUV 4:2:0色彩空間

如果你的CPU足夠強勁,那麼可以使用軟解來播放10bit視頻,和硬解相比這也更不容易出錯。但是如果你覺得視頻卡頓,恐怕就需要考慮硬解了。如何才能正確硬解10bit視頻?首先得判斷顯卡是否有能力支持10bit視頻的硬解。

硬解和GPU相關,先來說說NV方面。NV的硬解技術為PureVideo,要比較好地解碼4K HEVC 10-bit視頻,需要PureVideo VP7或以上規格的技術。那麼有什麼NV顯卡支持這個規格呢?到了帕斯卡這一代,包括GP102、GP104、GP106、GP107、GP108核心,全部都配備了PureVideo VP8,硬解4K HEVC 10-bit視頻無壓力;但上一代就比較詭異了,只有GM206(包括GTX 950、GTX 960)支持PureVideo VP7,其他都只支持VP6。

GTX 900系列只有GTX 950、960支持4K HEVC 10-bit硬解,GTX 1000系列全支持

再來說說AMD的GPU。AMD GPU的硬解技術是UVD,只有UVD 6.3或以上的版本,才能夠硬解4K HEVC 10-bit視頻。AMD的獨顯目前只有RX 400系列、RX 500、Vega系列有能力硬解,以及Stoney Ridge之後的APU可以硬解。

Intel的GPU硬解技術是Intel Quick Sync Video,只有Broxton(最新一代Atom,已停產),以及Kaby Lake(第七代酷睿)及更新的產品線能夠硬解4K HEVC 10-bit視頻。

Intel只有Kaby Lake之後的產品可完美硬解4K HEVC 10-bit視頻

除了看型號,還有一個最簡單的判斷GPU是否可以硬解4K HEVC 10-bit視頻的方法——使用DXVAChecker這款小軟體即可。如果看到「HEVC_VLD_Main10」一欄中有顯示「4K」或者「QFHD」,那就說明GPU可以硬解4K HEVC 10-bit視頻。

DXVAChecker,可檢查硬解的支持情況

DXVAChecker:點此進入官網下載

接著,需要正確配置解碼器,這裡仍以LAV解碼器為例,這是目前能比較好地解碼10bit的解碼器。在LAV解碼器當中,可以在「Hardware Acceleration」處選擇硬解方式,目前常用的一般是兩種硬解,一種是「DXVA2(native)」,另一種是「DXVA2(copy-back)」。

如果軟解性能不夠,需要硬解,推薦使用DXVA2 copy-back

這兩種硬解的區別在於,native會把數據完全交給GPU處理,而copy-back會多出一個回傳到內存給CPU處理的步驟。從效率的角度來說,native會更高一些。但是,如果要硬解10bit視頻,並不推薦使用native。

一來,使用DXVA native硬解,某些GPU解碼可能會出現問題,例如AMD RX顯卡用native解碼10bit可能會出問題,但NV的GTX10X0就不會,你很難判斷到底某顯卡用native解碼能不能正常工作,用copy-back大家都是沒問題的。二來使用native解碼會強制使用YUV輸出(在LAV設置了RGB輸出也不行),如果使用EVR渲染器畫質會比較差。

因此,如果你想要用顯卡硬解10bit視頻,那麼推薦使用LAV解碼器當中的DXVA2 copy-back硬解方式。如果性能足夠強勁,還是推薦使用CPU軟解,最不容易出錯。無論哪種硬解,都只對色彩空間是YUV 4:2:0的視頻有效,遇到YUV 4:4:4之類的高規格還是會軟解的。與此同時,如果用madVR渲染的話還要注意版本,madVR在0.9之後的版本才開始支持DXVA YUV 4:2:0的10bit解碼輸入。另外,軟解雖然費CPU,但也可以把更多的GPU資源留給madVR渲染器,以獲取更高的畫質,因此如果CPU性能夠強,還是軟解更合適。

BT.2020 HDR色域轉換BT.709 SDR色域

前面說到,HDR視頻的色域是BT.2020,這是一個廣色域。色域越廣,色彩往往越豐富,因此HDR的片子往往會艷麗很多。但是,現在的電腦顯示器未必都可以支持BT.2020色域,絕大多數的顯示器只能支持色域BT.709(SDR級別色域)。此情此景下,如果直接播放HDR視頻,那麼色彩甚至會比普通的視頻更加黯淡。要怎樣才能獲得比較好的效果?色域的轉換處理必不可少。

直接在SDR屏幕播放HDR視頻,會非常黯淡

經由精確的色域轉換後,色彩才會變得正常

要讓HDR視頻在普通屏幕上也變得明亮鮮活,需要將BT.2020色域進行精確轉換,而不是簡單粗暴砍成BT.709。這時候,渲染器所起到的作用就相當關鍵了。怎樣的渲染器才能比較好地進行色域轉換處理?madVR是最好的選擇。

madVR是PC平台上最好的視頻渲染器,沒有之一。在比較早的時候,madVR已經加入了BT.2020色域轉換的選項;而在近期版本,madVR還出現了專門的「HDR選項卡」,在當中就可以設置將HDR色域處理成普通的SDR色彩了。

在官網下載madVR即可,可以看到它支持眾多播放器,這裡仍以PotPlayer為例

我們首先需要把madVR設置為播放器的渲染器,這裡仍然以PotPlayer為例。madVR目前只有綠色版,點此進入官網下載,之後將madVR解壓到一個文件目錄當中。在PotPlayer「全局濾鏡優先權」一欄添加外部濾鏡,接著添加madVR目錄當中的「madVR.ax」或者「madVR64.ax」(取決於系統是否64位),然後將madVR設置為強制使用,雙擊進行配置。

強制使用madVR作渲染器

在madVR「devices」當中,可以看到當前的顯示器,然後展開顯示器的菜單,可以看到「hdr」選項。如果你的顯示器是非HDR的,那麼選中「convert HDR content to SDR by using pixel shader math」即可。如果你信得過軟體自動識別,那麼也可以選擇「let madVR decide」,一般情況下還是靠譜的。

madVR可以較好地處理色域轉換,不想折騰選擇自動即可

這裡可以講一下madVR這裡幾個關於HDR色域轉換的選項,其他選項在什麼情況下用得著?如果你用的是支持HDR的屏幕,例如某些電視機或者高端顯示器,那麼可以選擇「passthrough HDR content to the display」,這樣會直接把HDR不經由轉換,原封不動地進行輸出。而如果你用的是廣色域屏幕但色域不是BT.2020,例如色域是Adobe 99%的設計專用屏幕,可以選擇「process HDR content by using pixel shader math」,這樣HDR色彩會經過轉換處理,顯示更加準確。

而如果你的屏幕經過校色儀校準,並且讓校色軟體(例如DispalyCal)生成了3DLUT校色檔案,並且校色軟體支持將其輸出到madVR當中,那麼可以選擇選項後帶有「using an external 3DLUT」的選項,一般情況下就不要選了。

HDR顯示器直接播放HDR真的沒問題嗎?

前面提到,madVR是支持輸出HDR信號的,如果你的顯示器支持HDR,那麼是不是就應該讓madVR輸出HDR?並不一定!雖然很多顯示器支持HDR,但效果並不好,貿然使用HDR輸出,畫質甚至不如將HDR轉換為SDR再輸出好。

不是所有HDR顯示屏都有足夠的亮度去實現好的HDR效果的,300cd/m2不到的亮度效果可想而知

現在某些顯示器聲稱支持HDR,但亮度等關鍵參數並不出彩。如果使用這些設備放映HDR視頻,往往會自動切換到HDR模式,反而造成亮度下降、偏色等一系列問題。因此,這類較低端的HDR屏幕使用轉換過色域的畫面,效果反而會更好。

不僅如此,在HDR模式下可能還會嚴重偏色,還不如將HDR視頻轉換為SDR後再播放效果好

毫無疑問,用madVR來處理HDR色域轉換是必不可少的方案。而使用madVR還有一個好處,那就是它能夠精確地進行YUV和RGB色彩空間的轉換。就算解碼器輸出的是YUV信號,也能夠轉換成為高質量的RGB信號,比Windows的EVR不知搞到哪裡去。madVR唯一的缺點就是比較吃GPU資源,如果你的硬體足夠強勁,用的是目前主流的顯卡,那麼madVR值得強烈推薦。

聲道:杜比全景聲映射為雙聲道立體聲

說了不少和畫面相關的內容,再來說說聲音相關的吧。如果HDR視頻源自UHD BD,那麼往往還會帶有多聲道。特別是杜比視界HDR,基本上都是和杜比全景聲搭配的。如果直接播放這類片子,而輸出設備只是普通的2.0、2.1音箱甚至只是耳機,那麼聲音可能就會出現破音等失真的情況,這又是一個很多人不曾注意的坑。

HDR視頻往往搭配多聲道,直接用耳機播放可能會出現破音、干音等失真

怎麼辦?其實LAV濾鏡也提供了解決方案。仍然以PotPlayer為例,將「LAVAudio.ax」添加到PotPlayer當中並設置強制使用,然後雙擊「LAV Audio Decoder」進行配置。

添加LAV Audio Decoder並強制使用

點擊「Mixing」選項卡,這裡面的功能是和混響相關的,可以將多聲道混響為雙聲道的立體聲。勾選「Enable Mixing」,並選擇「Stereo」,然後確保「LFE Mix Level」數值為0即可。如此一來,就算用雙聲道的音箱、耳機播放環繞聲的HDR視頻,也不會出現破音等情況了。

設置將聲音混響為雙聲道立體聲

AACS 2.0:正版HDR輸出需要SGX

前面提到,不少HDR視頻都是源自於UHD BD,因此一些發燒友也會直接購買正版的UHD BD碟片觀看。但是,如果用電腦配合UHD BD光碟機來播放正版HDR影片,需要講究的地方也不少,一不小心也會掉到坑裡面。

首先,播放軟體不能使用PotPlayer這樣普通的播放器了。正版的UHD BD帶有AACS 2.0防盜版技術,需要經由認證的軟體才能播放。目前只有正版的PowerDVD才可以播放UHD BD,破解版的無法播放。這個軟體並不便宜,支持UHD BD的版本售價為580元人民幣。不過購買某些UHD BD光碟機,可能會獲贈這一軟體,大家可以留意廠商活動和產品說明。

要播放正版UHD BD,需要正版PowerDVD

其次,要播放正版UHD BD光碟還需要CPU支持SGX。該技術是英特爾特有,而且只存在於部分Kaby Lake以及Sky Lake之後的CPU中(點此查看支持SGX CPU列表 ),AMD所有平台、英特爾的X99等其他平台的CPU一律無法播放版許可權制的UHD BD。要看正版4K HDR藍光碟,A飯是當不成了。

正版UHD BD需要CPU支持SGX

總結

HDR視頻日漸流行,但距離全面普及顯然還有一大段距離。現在使用電腦播放HDR視頻仍需要細心料理每一個環節,效果才能比較令人滿意。希望有越來越多成熟方案出現,有朝一日大家都能輕鬆感受到到HDR視頻的精彩之處吧。

推薦閱讀:

TAG:HDR | 軟體 | 多媒體播放器(軟體) |