查看: 27586|回覆: 6
收起左側

[教學] [轉載] 10bit視頻編碼——特性及全面播放方法介紹

[複製連結]

發表於 2012-1-20 13:31:14 | 顯示全部樓層 |閱讀模式

馬上註冊,結交更多好友,享用更多功能,讓你輕鬆玩轉社區。

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
本文章最後由 pureland 於 2012-1-20 14:26 編輯

全文來自NMMmawen1250大大,已獲得同意轉載!!

測試用視頻:

一、前言

10bit視頻的播放,想偷懶的人可以直接用最新版MPC-HCPotplayermplayerQQ影音等播放器,或者使用各種解碼包的最新版(都是使用ffdshow/LAV實現解碼的),其內部解碼器都是基於ffmpeg(libav)的。這些播放器和解碼器中用的色彩轉換也基本都是libswscale,所以有部分會出現色彩空間轉換上的錯誤以及dither方式的不恰當。並且由於10bit YUV8bit YUV再到8bit RGB的坑爹轉換過程使損失也大大增加(前一步對於10bit而言還有dither的過程,可以增加一定的精度,8bit視頻播放就是做了後面的一步,所以即使這樣10bit的效果也還是比8bit重編碼的情況好不少)。
於是對重播品質(8bit10bit都能受益)有追求的可以參考下面介紹的基於MPC-HC使用madVR的播放教程,也可以看VX的播放攻略,其中也包括對於電腦性能不足的情況的解決方案:http://www.vempx.net/article/552.htm

關於10bit視頻播放對電腦性能的要求,主要是不支持硬解(包括DXVACUVIDQuickSync),所以要靠軟解,而目前軟解10bit視頻效率最高的就是LAV Video Decoders,基本上短時碼率不超過30Mbps的話現在的雙核CPU都能應付。但為了最佳的重播要靠madVR渲染器,而madVR內部各種mad的處理過程靠的不是CPU,而是GPUShader,也就是說顯卡不能太差,顯卡要能支持DX 9.0c,顯存最好在384MB以上,對顯卡性能的要求我沒有什麼可以參考的依據,只知道我自己筆記本上的GT420MHTPC上的HD5550都毫無壓力。

二、10bit的優勢

有關10bit重編碼的優勢,實際上就是用更高位深來進行資料的有損編碼的優勢,而且bit越高效果越好。最簡單的一句話就是,壓縮率更高,以更低的碼率提供更好的還原效果,這已經足夠具有意義了。

在二進位下對8bit的源資料進行有損編碼,造成相同量化損失時,以8bit100%error(殘差)時,9bit50%error10bit25%12bit6.25%……所以在HEVC(也就是H.265)裏有個叫IBDIInternal bit depth increase)的技術,就是用12bit的內部精度來進行8bit源資料的重編碼。
例如:
8bit源數據: 10011010
8bit量化後: 10011011
10bit量化後:1001101001
12bit量化後:100110100001

當然相同量化時肯定是bit越高的資料占的容量多,但由於損失程度的降低,綜合下來的結果是,相同碼率下高位深編碼的還原程度始終大於等於低位深。
而其實在目前的大部分有損音頻編碼裏,不管輸入的是16bit整數還是24bit整數,其內部都是用32bit浮點數來進行編碼的,能大大減小error。至於為什麼不在視頻裏用浮點數編碼,可能的原因之一是,目前最強的桌面級CPU也只能勉強解碼一個浮點數編碼的1080p 24fps視頻。

至於你想說:“我只有8bit的顯示設備,10bit有什麼用呢?” 這不是什麼問題,因為最終是要靠dither(抖動)轉換成8bit RGB的,事實上madVR內部是不管你8bit還是10bit輸入,都先升到16bit進行處理,最後再dither8bit RGB32進行輸出,所以它才能實現最高精度的轉換和最小的error

而且最近還有這麼一篇文章,對不同位深的YUV空間的色彩數量進行分析,發現8bitYUV轉換成RGB後遠遠到達不了8bit RGB16777216色(目前大部分高清視頻就是屬於8bit-Rec709的情況),只有用10bit及以上精度YUV轉換為8bit RGB才能達到16.7M色:http://goldenhige.cocolog-nifty.com/blog/2012/01/rgb2416777216yu.html

另外也可參考這裏taro大所說的:http://tieba.baidu.com/p/1356709843?pn=2

三、對比測試

我對10bit8bit編碼的客觀測試結果,橫軸為碼率,豎軸為1/(1-SSIM)SSIM(結構相似度)是一種衡量兩畫面間相似度的演算法(在這裏是編碼後的視頻和源視頻的比較)。另外我這裏出於個人需求順便對mbtree的情況做了測試,對此不感興趣的可以無視。

上圖以Clannad ASEP013654-17653幀(正片的大約前一半,不含OP)為測試片段,代表典型動畫的情況。
下圖以The DarkKnight1273-9327幀為測試片段,代表電影的情況,而且是全部IMAX的片段,噪點也比較少,可以看作高畫質片源。
上圖中可以看到同樣達到2001/(1-SSIM)時,8bit需要4500kbps,而10bit只需要1200kbps,這樣的優勢我覺得不需要多說什麼了。
根據我的經驗,10bit對於gradient(梯度變化)的畫面(特別像是暗場之類的)優勢特別明顯,客觀上SSIM值很高,主觀上基本不會產生banding(色彩過渡區域的色帶)。
當然我也遇到了個別奇葩片源比如龍珠ZBD-BOX,非常強的動態噪點,crf=20跑出來了25Mbps的碼率,而且這時10bit8bit重編碼的差距基本可以忽略。

四、播放相關

我更新這篇文章時(2012.1.18)所使用的軟體及版本:
Media Player Classic HomeCinema (x86), 1.5.3.3971,BE Mod
ffdshow tryouts project, svn 4257 (x86) -MSVC2010
LAV Filters 0.44
madVR 0.80
Haali Media Splitter v1.11.288.0
Reclock 1.8.7.7

下面我以基於MPC-HC的播放設置為例,其他播放器的做法也類似。


播放推薦使用的軟體/濾鏡:

1.(推薦)MPC-HC播放器下載地址:
下載x86版本,推薦MSVC2010編譯版

2.(可選但推薦)LAV Filters——分離器/音視頻解碼器下載位址:
下載“Installer(both x86/x64)”,也就是安裝版,使用最方便
安裝時注意勾選FLAC的分離、解碼支持

3.(推薦)madVR渲染器下載地址:
下載以後解壓出來的madVR檔夾放在純英文目錄中,然後雙擊裏面的install.bat即可註冊好,注意保留這個檔夾。

4.(可選)Haali分離器下載位址:
mkv還是更推薦使用Haali Media Splitter作為分離器,因為它能支持檔間的Link,比如一些把OPED切到外面去的壓制,然後播放正片時會自動根據UID在指定的章節連接到那些檔。
如果不需要這個功能的話,LAVSplitter就夠用了。
但是Haali有個霸道的設定,改變了H.264MediaType,導致一些解碼器無法正常調用(我這裏用到的LAVffdshow沒有問題),所以如果需要用到其他一些解碼器的話在Haali的設置裏將Output——Use custom media type for H.264設為No

5.(可選)ffdshow tryout解碼器組件下載位址:
下載x86版本

6.(可選)Reclock下載地址:
我主要是用到了它的WASAPI獨佔輸出,可以實現音頻解碼後的PCM信號bit exact輸出至音頻設備(不受作業系統的混音、重採樣影響)。

7.(可選)xy-VSFilter下載地址
一個國人基於VSFilter2.39進行優化修改後的VSFilter,對於ASS字幕播放的效率大大提高,也能支援10bit/16bit的輸入/輸出,自動根據解析度判斷BT.601/BT.709進行RGB轉換……

備註:
現在LAV FiltersmadVRxy-VSFilter間正在研究新的濾鏡間的通信方式,比如最近LAVmadVR同時放出測試版,前者支持DXVA2硬解碼(僅用於Win 7/Vista),並且想辦法將硬解後的視頻從顯存中抓回來以NV12輸出(以前硬解後的視頻就直接交由顯卡處理後輸出至顯示器,所以存在各種限制),然後可以輸入ffdshow做後處理、VSFilter渲染字幕,並可以用madVR來渲染……
xy-VSFiltermadVR也在研究新的字幕的傳遞、渲染方式。目前無論是VSFilter將字幕渲染在解碼器輸出的視頻流後再給渲染器處理(ResizeRGB Conversion)的方式,還是MPC-HC內置字幕引擎將字幕渲染在渲染器層(已經過RGB轉換、resize和加黑邊)的方式,都存在其固有的弊端,今天ANE也有篇新文章講到了這個問題:http://afternoonnapsempire.org/subtitle-renderer-matters/

五、播放設置圖文教程

要強調一點以避免人誤會,以下的播放設置是全方面播放設置的教程,也是我自己使用的方案,但只有一部分是關於10bit的(實際上對8bit也一樣,這樣做是最有利於重播效果的)。
所以如果只是為了完美重播8bit/10bitH.264視頻,只要安裝並在渲染器裏選擇madVR就可以了,可以參考VX的播放攻略:http://www.vempx.net/article/552.htm

1.字幕設置

2.濾鏡調用設置

3.濾鏡內的設置

4.渲染器設置

另外補充一點,Reclock本身是開發出來用於音視頻同步、PAL降速等工作的,所以其工作與頻率密切相關,如果你的CPU超頻或降頻了很可能會出現播放速度上的問題,這時你只能不用Reclock或者恢復默認頻率。

5.播放時的音視頻流切換

發表於 2012-1-20 15:23:33 | 顯示全部樓層
這些東西不如自己體會之後  重新自己寫教學 既不需要轉貼 又可以學習到更多
這樣更有意義 10bit在"動漫界" 已經開始流傳了.各家字幕組作品都一定帶有10bit的
回覆 支持 反對

使用道具 舉報


發表於 2012-1-20 15:24:04 | 顯示全部樓層
给力,超级给力~~
回覆 支持 反對

使用道具 舉報


發表於 2012-1-25 03:26:56 | 顯示全部樓層
泡在這篇文章裡好久了....

努力學習中!!!
回覆 支持 反對

使用道具 舉報


發表於 2012-1-30 02:05:55 | 顯示全部樓層
10bit暂时还不支持硬解,对于旧电脑播放1080p高码率版可能比较吃力。
回覆 支持 反對

使用道具 舉報


發表於 2012-2-2 14:58:41 | 顯示全部樓層
先標記一下,改天有空好好學習研究一下
順便通知一下LAV Filters 0.44長大了一點點
升到了LAV Filters 0.45
回覆 支持 反對

使用道具 舉報


發表於 2012-2-3 01:34:15 | 顯示全部樓層
给力~
受教了
看来要好好的看完
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回文 登入 | 註冊

本版積分規則

熱門推薦

風暴StormAudio 家庭劇院巡禮 : 來自新加坡頂層公寓的聲音饗宴
風暴StormAudio 家庭劇院
風暴StormAudio 家庭劇院巡禮 : 來自新加坡頂層公寓的聲音饗宴
何止錦上添花!?Zidoo Neo Alpha的最佳Wingman - HD Fury Vrroom V3
何止錦上添花!?Zidoo Ne
何止錦上添花!?Zidoo Neo Alpha的最佳Wingman - HD Fury 8K VR
風暴StormAudio/Goldmund家庭劇院巡禮 "KazCorporation:為音樂愛好者實現家庭劇院夢想"
風暴StormAudio/Goldmund
風暴StormAudio/Goldmund家庭劇院巡禮"KazCorporation:為音樂愛
風暴StormAudio 4.6r0韌體釋出囉!
風暴StormAudio 4.6r0韌體
風暴StormAudio 4.6r0韌體釋出囉! 新功能和增強功能 系統控
劇毒!DIVA EX-7/EX-mini賢昆仲相汝以沫Hi-End音響網路交換器體驗心得分享
劇毒!DIVA EX-7/EX-mini
劇毒!DIVA EX-7/EX-mini賢昆仲相汝以沫Hi-End音響網路交換器體

聯絡我們| 問題反映| 小黑屋| 手機版| Archiver|  本網站特別聘請 蔡家豪律師 為本站法律顧問

快速回覆 返回頂部 返回列表