2016年12月24日 星期六

Lav-filter高效率的影音解碼神器

Lav-filter係知名既濾鏡當中包括解碼器同分離器,支援眾多影片同音訊格式、高效率既解碼速度亦支援硬體加速、多種影像像素格式既轉換,係一個有效降低解碼時既電腦負荷的工具。

安裝流程


在此連結https://github.com/Nevcairiel/LAVFilters/releases下載安裝檔,選擇最新版本便可以。

根據播放器是32bit或64bit而選擇,32bit便選擇x86;64bit便選擇x64,不過32bit和64bit一齊安裝都無所謂,其實更方便從32bit和64bit播放器之間轉換。

MPC-HC及BE播放器可以在外部篩選器新增篩選器加上LAV SplitterLAV Splitter Source、LAV Video Decoder、LAV Video Decoder,記住設定為偏好。

Potplayer播放器可以在全域濾鏡中按新增系統濾鏡加上LAV SplitterLAV Splitter Source、LAV Video Decoder、LAV Video Decoder,記住優先順序設定為強制使用。

Lav-filter包含左分離器(splitter)、影像解碼器(video decoder)、音訊解碼器(audio decoder),後兩者明顯係解碼影像同音訊,而splitter就用作分開影片中唔同既資料如音訊影像字幕但係要理解splitter既用處就要先理解一條影片係要經過點樣既處理先知道splitter既用處。

lav-splitter係建基於libavformatlibbluray既資料庫,作用係將影片中一連串既訊息分開番做獨立既部份,然後影像、音訊、字幕既訊息再交由各自既解碼器處理,splitter會影響影片開啟同移動時間軸既速度,

而Splitter亦分開Splitter和Splitter Source兩款稍有分別的版本,兩個都有分離影片資訊的功能,但Splitter Source額外有File Source(Async)讀取影片檔案的功能,可以取代播放器內置的File Source功能,但Splitter則需要播放器內置的File Source功能。

上方Audio及Subtitles的位置可以輸入某些字眼以自動選用習慣的字幕及聲道,當然包括外置字幕及音訊檔,
例如在Audio中輸入eng就代表優先選用英文類音訊檔、jpn代表日文諸如此類,不過這只是通常使用的字眼,有時可以使用其他字眼代表不同語言,假如使用外置音訊檔可以在檔案的副檔案名之前得知;
Subtitles則可以輸入cht、big5、tc等代表正體中文,希望得知其他語言的字眼亦可以在檔案的副檔案名之前得知。


lav-video decoder係基於ffmpeg既影像解碼器,我分做3個部份黎簡要一吓。

,黃色框的部份,
Threads for Multi-Threading設定可以用幾多CPU既線程黎解碼,
而下面兩項都係設定去交錯既設定
Field Order決定去交錯時把影格合併的次序,因為次序錯誤會合併出如下圖錯誤的影像,
Deinterlacing Mode就選擇會否進行去交錯(deinterlacing),而當中有4個選項,AutoAggresiveForceDisable,auto就懷疑影片是否隔行掃描時不會運行去交錯、aggresive懷疑影片是否隔行掃描就會進行去交錯、force就任何時間都使用去交錯、disable就任何時侯都不會去交錯。

在右下方有內置既去交錯算法分別有YADIFWeston Three Field(Simple)Weston Three Field(Complex),NIVIDA同intel既顯示卡更支援GPU運算既硬體去交錯(Hardware/GPU Deinterlacing),但我不會睇隔行掃描既影片,所以不會用去交錯既功能,所以邊種去交錯既方法效果較好就需要用家自行嘗試同考究。


,紅色框的部份,
支援幾種硬體加速方法,亦顯示你顯示卡所支援既解像度同壓縮格式,呢個功能可以使用GPU中某個部份運算黎減輕CPU係將影片解碼既負荷。係HEVC同4K開始盛行既時代,而CPU既發展又未到輕鬆播放既地步所以硬體加速係頗重要既技術。

NVIDIA CUVID,係NVIDIA既顯示卡先用到既方法,2016出既10系卡都支援HEVC、10-bit、4K,但上代9系則只有960支援晒HEVC、10-bit、4K,970/980之類只支援8-bit既HEVC。

Intel QuickSync,係Intel CPU內置顯示卡先用到既方法,暫時最新既skylake系列GPU支援HEVC、10-bit、4K,

DXVA2係微軟(Microsoft)開發既硬體加速方法,唔同廠商既顥示卡都支援,所以Intel、NIVIDA都能夠使用DXVA2同自家兩種硬解,而AMD則冇自家既硬解所以只能用DXVA2。
另外DXVA2當中都分左兩個方法,較新既係copy-back mode,較舊既係native mode。但並唔係新就好過舊,兩者都各有優劣。

DXVA2 copy-back mode,係DXVA2中較新既方法,copy-back係指將解碼既資訊會係GPU回流到CPU再交到GPU先交到渲染器處理,這樣可以提高對濾鏡既支援,但對比native mode稍微提高GPU的負荷。

DXVA2 native mode,係DXVA2中較舊既方法,對其他濾鏡既支援度較低,因為直接將資訊交到GPU就輸出到畫面,某些濾鏡可能無法使用。不過這方法的GPU負荷依然低於
copy-back mode。

,藍色框的部份,
全面多樣影片編碼同像素格式的輸出選擇,
橫向係檔案編碼分別有8-bit、10-bit、16-bit,
縱向係像素格式分別有YUV(4:2:0、4:2:2、4:4:4)、RGB。

RGB Output levels就設定影片輸出的色域,根據自己螢幕是電視(TV)電腦(PC)選擇就可以,Untouched即維持影片原來的色域。

Dithering Mode中有ordered DitheringRandom Dithering兩個選擇,而Dithering作用係加上顏色躁點以補償轉換影像格式時損失既顏色,而ordered dithering就會根據畫面顏色分佈而加上不同顏色躁點,random dithering則在整個畫面隨意加上顏色躁點,效果就好似下圖使用MadVR以3-bit色深出畫面,當然係播放影片時唔會用3-bit的色深所以效果唔會下圖咁明顯,
如果使用MadVR的dithering無須理會lav filter的選項,因為會使用MadVR的dithering方法。

沒有dithering

ordered Dithering

Random Dithering

lav-audio decoder都係基於ffmpeg既音訊解碼器,呢度需要選擇既設定唔多亦唔太複雜,藍色框內是類比(anglog)訊號的設定,紅色框內的選項是電子(digital)訊號的設定,但我冇任何用電子訊號既設備,所以設定上就唔多講。

而另外lav-audio decoder有mixing既功能,如果你用緊2.0聲道既喇叭而睇緊5.1聲道既影片,一般只會保留前置左右聲道而忽略其他聲道,但mixing後就可以係保留到所有聲道既聲音,雖然無法完全重現5.1聲道既體驗,但總可以得到合理既體現,原理就像下圖展示般。
lav-audio-decoder-mixing-method

而在Mixing項目中首先說明右方的設定,

Settings可以選擇不會把雙聲道的來源混音(Don't mix Stereo sources),假如你正使用2.0聲道的喇叭就可以剔上,因為無需混音。
Normalize Matrix即把不同聲道混音時使用常見的音量分佈;
Clipping Protection用處是防止混音後的聲量過大。

右下方的Matrix Encoding可以選擇Dolby Pro LogicDolby Pro Logic II的編碼方式輸出到喇叭,但喇叭系統必須同時支援Dolby Pro LogicDolby Pro Logic II才有效,如不支援就選擇None便可以。

左方Mixer的3個選項對應唔同方位既聲音,
Central對應正面向既聲音,係紅色標示既部份。
surround對應周邊既聲音,係橙色標示既部份。
LEF對應低音既聲音,係黃色標示既部份。
注意各方面調校得太高會令音量過大蓋過其他聲音,但對於各人都各樣的需求,所以要自己嘗試唔同數值。





4 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 你好,lav-splitter要如何正確設定字幕軌
    http://i.imgur.com/NVmNyRo.png
    http://i.imgur.com/qUqSniG.png
    預設播放器是用Potplayer
    字幕軌是"CN CHS [chi]"
    但要如何設定"TW CHT [chi]" or "ENG [eng]"為優先
    不然許多MKV封裝的檔案軌道無法用lav-splitter做改變
    希望指導下,謝謝

    回覆刪除
    回覆
    1. lav-splitter只能分辨[XXX]中的字眼,"TW CHT"是影片製作者對各字幕為觀眾容易分辨而添加的名稱,所以不能設定TW CHT為優先。
      但如果想設定中文字幕為優先可以加上此指令*:chi;*:*|f;*:*|d
      詳細的解釋可以到此網址https://1f0.de/lav-splitter/lav-splitter-stream-selection/

      刪除