超載
現在是數字時代,我們的視頻內容一樣也是數字存儲,這和很久之前的模擬錄像完全不同。既然是數字構成的,那么視頻文件也和其他編程文件一樣,需要通過機器語言“翻譯”給電腦,用0、1這樣的數字信號存儲起來;電腦在播放視頻的時候則是經過“翻譯”,將這些數字“變回”視頻畫面,這個過程就是視頻的編碼一解碼,英文稱作Video Codec。其中,編碼的工作稱之為Encode,解碼的工作則稱之為Decode。
當然,筆者這樣解釋只不過是通俗易懂的方式,在視頻編解碼的過程中現在已經不僅只是負責“翻譯”那么簡單了。視頻編碼是壓縮和可能改變視頻內容格式的過程,首要作用自然是模擬源更改為數字源。在壓縮方面,目標是減少占用空間。這使得它是一個有損的過程,會拋棄與視頻相關的信息。在解壓縮以進行回放時,創建原始的近似值。應用的壓縮越多,拋棄的數據越多,近似值與原始數據相比差距越大。
提及有損,那就要提到編碼了,正如《視頻格式你真了解嗎》一文提到的,諸如H.264、HEVC、VP9乃至AV1,都是通過不同的編碼壓縮方案對視頻進行編碼壓縮,在盡可能保證視頻素質本身的同時極力壓縮視頻容量。
最后,再經過不同文件格式(對應于編碼方案)進行封裝,這才有了我們常見的MKV、MP4、MOV等視頻文件。
在專用的視頻播放設備中,自然有負責編解碼的硬件,而在電腦上,這一切通常都要交付于GPU或者說顯卡來進行計算,而不是CPU——通俗地講使用GPU進行解碼時,我們將其稱之為“硬解”;使用CPU進行視頻解碼播放時,我們將其稱之為“軟解”。
本質上說,CPU硬解的視頻畫面還原水準是最好的,因為一切都由CPU進行“自由”計算,視頻可以提供的色彩范圍、壓縮的視頻信息,皆可——根據實際進行“還原”,但是,它會極度消耗系統資源,CPU很容就變成100%滿載,根本無法兼顧其他必須的工作。而GPU硬解,相當于在GPU內預置了針對不同編碼的“解決方案”。任務工作一來,GPU就會直接套用這些生硬的“操作流程”對視頻進行解碼還原。這樣的好處自然是解碼順暢,效率更高、節約系統資源,不好的地方在于,它根本不顧及視頻源本身的特質,如色彩等等方面的還原,只能“生搬硬套”——除非你可以手動調節。
目前市場上主流的GPU提供商無非就是NVIDIA、AMD和英特爾三家,它們無論是獨顯還是集成顯卡,都對不同編碼的視頻方案提供了解碼的“預置方案”,當然,因為年代不同,可能有些顯卡并不能支持全部的視頻編解碼方案。一般而言,時下最為主流的H.264編碼視頻,近十年以來的GPU都可以支持;而HEVC(包括HEVC 10bit),則是近五年的GPU產品才能夠提供完善的硬解能力。而日后最值得關注的AV1編碼硬解能力,只有從去年發布的GPU產品中才能支持(也就是AMD Radeon RX6000系列、NVIDIA GeFroce RTX 3000系列及Intel 11代酷睿的核顯GPU系列)。
筆者為此也整理了近十年GPU產品對視頻的解碼能力,將其附表于下,方便讀者朋友們查閱。注意,這三個涉及NVIDIA、AMD和英特爾GPU硬解的表格僅僅針對解碼規格,編碼的區別并無涉及。
光有GPU硬件解碼還不夠,需要軟件來將機器語言翻譯成真正的可視畫面,這才能完成最后一步“觀看視頻”。但是,目前任意一個電腦用的播放器軟件可以說都是“基本設置”,要想真正還原好視頻應有的“精彩影像”,就必須有針對性的進行調整。
色深調整首當其沖
在設置播放器之前,我們要對GPU進行一個重要的設置,這就是調整色深。顯示器的色彩能力主要由三個參數決定:色域、色準、色深。色域決定了顯示器色彩的豐富度,色準決定了顯示器色彩的準確度,色深則決定的是顯示器色彩的過渡流暢度。色深(bit)可以理解為顏色數量的多少,數值越大,色彩越細膩,過渡越平滑自然。
紅、綠、藍即RGB三原色各具有256(2的8次方)個灰階數時,把三個通道的256個灰階數相乘,就能得到8bit所能呈現的全部色彩了,即1677萬色;而10bit色彩就是具有2的10次方個灰階數,每個通道為1024個灰度值,最終色彩可以達到10.7億色,這樣可以讓色彩的過渡更為自然。
使用AMD顯卡的用戶,在AMD顯卡的控制面板中,找到顯示器項,然后點擊“像素格式”,將其設置為Full RGB模式,也就是無論視頻片源如何,在顯卡輸出到顯示器階段,色彩深度可以全數進行輸出,達到10bit色。
使用NVIDIA顯卡的用戶,需要在NVIDIA顯卡的控制面板左側欄中找到“顯示→更改分辨率”,將“輸出動態范圍”修改為“完全”;然后同樣在左側欄中找到“視頻→調整視頻顏色設置”,將動態范圍選擇為“完全(0-255)”。
使用Intel核顯的用戶,要在英特爾顯卡控制面板(注:新版本英特爾顯卡控制面板需要在微軟商店中單獨下載安裝)中,找到“視頻”一項(左側欄中的視頻圖標),點擊添加一個視頻配置文件為“自定義”,然后下拉到底部,在“輸入范圍”處,將其修改為:“全”。
設置播放器 完美回放在此一舉
本文以PotPlayer為例進行設置(注:該播放器免費,且具有極高的自定義功能),首先下載并安裝PotPlayer(下載地址:https:∥pc.qq.com/detail/14/detail 15654.html),整個安裝按照向導提示操作即可,但是在PotPlayer安裝向導的最后一步,注意要勾選“安裝額外的編解碼器(OpenCodec)”一項,讓其自動下載額外的編解碼器。
安裝好PotPlayer后,還需要下載“madVR”和“LAVFilters”(下載地址:https:∥pan.baidu.com/s/14MimulM4nOdfGQJKFiRsVw提取碼:hopb),它們分別是視頻渲染器和分離/解碼器,正是它們的“加入”,才能讓PotPlayer充分調用GPU編解碼能力。
安裝LAVFilters非常簡單,只需要解壓縮后雙擊LAVFilters-0.71-Installer.exe運行安裝向導即可。madVR的安裝則需要注意,首先是解壓縮的路徑中不能合有中文目錄(任何一級都不可以),然后我們找到madVR中的“Install.bat”右鍵單擊,選擇“以管理員身份運行”方可。
注意,madVR安裝完畢后,該目錄包括內部的所有文件,就不可以轉移到其它存儲位置了,否則將會失去效用。
一切就緒后運行PotPlayer,并在當前狀態下按下鍵盤F5快捷鍵,調用PotPlayer的選項頁面進行設置。首先切換左側欄點選“濾鏡”一項,然后在右側“內置圖像處理濾鏡設置”處,將“激活條件”從“總是使用(推薦)”調整為“不使用”,然后點擊“應用”。這樣,我們就避免了PotPlayer使用默認的濾鏡對視頻進行處理,而是使用之后我們設置的madVR,這樣當你遇到精度更高的10bit色深電影時,不會被PotPlayer直接處理成8bit色,無端的色彩就這樣被“處理掉了”。
接下來,點擊左側欄“濾鏡”展開,找到并單擊其中的“源濾鏡/分離器”一項,然后點擊右下方的“濾鏡/解碼器管理”。
在彈出的新界面中,點擊“搜索后添加”,此時左側“DirectShow濾鏡列表”中會自動添加已經安裝的濾鏡,我們不需要任何修改單擊“確定”即可。
回到“濾鏡/解碼器管理”界面,將右側“源濾鏡/分離器管理”下除“Real”以外所有項統一修改稱“LAVSplitter Source”,“Real”保持默認的“內置REAL源濾鏡/分離器(推薦)”再點擊“應用”即可。
還是在左側濾鏡下,找到“視頻解碼器”項單擊,然后切換到右側,將視頻解碼器和音頻解碼器修改為“LAV Video Decoder”,注意,其中的H.265修改為“使用系統默認解碼器”再點擊“應用”即可。
設置完濾鏡和解碼器,我們還需要設置視頻渲染器,在PotPlayer的選項頁中,左側點擊切換到“視頻”選項卡,在“視頻輸出設備”的“視頻渲染方式中”,選中“Madshi視頻渲染”點擊“應用”,以調用madVR。需要注意,madVR(全稱madshi Video Renderer)是當前Windows平臺下最好的視頻渲染器,效果極為出眾,但是它對資源的消耗也比較大,配置較低的電腦可能會有些卡頓。
接著,點擊“視頻”中的“色彩空間/屬性”,將“YCbCr<->RGB規則”調整成為“自動選擇”。
最后,點擊左側“聲音”選項卡,在右側的“音頻輸出”中,將“默認輸出設備”修改為“內置WASAPI音頻渲染器”,以取代默認的Default Direct SoundDevice,大功告成!
如此以來PotPlayer將利用GPU硬解能力,配合使用LAVFilters濾鏡+解碼,并使用madVR進行最后的渲染,視頻播放時的色彩將大幅度提升(相應系統資源消耗也會更大,尤其是調用madVR時),而且借助于madVR的神奇補幀功能,普通的24幀視頻內容將直接變為60幀,畫面的流暢度將更加出眾。