【图像处理】H.264开源解码器评测
轉自:http://wmnmtm.blog.163.com/blog/static/38245714201142883032575/
要播放HDTV,就首先要正確地解開封裝,然后進行視頻音頻解碼。所以我們需要分離器,視頻解碼器和音頻解碼器,俗稱hdtv的“三件套”,又統稱濾鏡。
H264的分離器:
常見的有Gabest MP4分離器,就是MP4splitter,也是Gabest編寫的,Halli的分離器和NDigital分離器等。
H264的視頻解碼器:
CoreAVC的H264視頻解碼器CoreAVC DirectShow Video Decoder。
月光的H264解碼器,全稱為Moonlight?H264 Video Decoder,ffdshow的解碼器,全稱為ffdshow MPEG-4 Video Decoder,能打開N卡顯卡硬件加速的CyberLink H.264/AVC Decoder(PDVD7)。
音頻解碼器:
ffdsshow,月光音頻解碼器、WinDVD的音頻解碼器、PowerDVD的音頻解碼器、AC3Filter音頻解碼器。
如果播放HDTV時碰到有聲無畫或者有畫無聲,就應該自己從解碼器著手,替換一個試試。
緣起:HDTV的減肥藥
其實HDTV個頭大的根本原因,并非是分辨率太高,而是采用的MPEG2視頻壓縮算法力道不夠,換成MPEG4就好得多,基本上可壓縮到幾G,但目前MPEG4編碼群雄并起,編解碼方案很不統一,有時拿著一部好片折騰半天卻放不出來,再好的脾氣也不免搓火。
現階段比較好的選擇是H.264/AVC。它是由ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(運動圖像專家組)共同開發的視頻處理標準,ITU-T稱為H.264,而ISO/IEC稱為AVC(高級視頻編碼),并將其作為MPEG-4 Part 10??梢哉f,H.264代表了當前業界最先進的視頻壓縮技術,具有壓縮比高、碼率低、圖像質量好、容錯能力強、網絡適應性廣等優點,在數字影像、網絡電話、多媒體、IPTV、通訊等領域得到越來越廣泛的應用。用H.264來處理HDTV,不僅能保留較高的視頻質量,而且可以將HDTV瘦身到令人驚訝的程度,實在是對了HDTV肥胖癥的減肥藥。
實戰:自己動手編碼H.264影片
現在H.264的編碼器已經很多,MainConcept H.264 Encoder和X264都很不錯。下面以MainConcept H.264 Encoder為例,介紹如何將Mpeg-HDTV轉換為H.264-HDTV。
啟動MainConcept H.264 Encoder,在Video編輯框中輸入待轉換視頻文件名,或點擊旁邊的Open按鈕選擇。MainConcept H.264 Encoder能識別絕大多數視頻格式,包括HDTV常使用的TS和M2V、MPG、AVI、WMV格式。由于許多HDTV節目視頻和音頻是分離的,因此 MainConcept H.264 Encoder單獨設置了Audio編輯框,可在其中輸入HDTV音頻文件,或用旁邊的Open按鈕選擇。如果音視頻是合成在一起的,那么選擇視頻文件后,Audio編輯框自動出現該視頻文件,勿需再選擇音頻文件了。Output編輯框設置目標文件名,一般為MPG文件。
下面Output format欄設置目標文件的格式。設置好后,點擊主界面下的Convert按鈕,即可開始轉換。由于H.264編碼需要大量計算,頗為耗時,所以用戶得有比較好的耐心。編碼完成后,大家可以拿目標文件同源文件對比一下,不難發現用H.264編碼的HDTV文件大小只有MPEG2編碼的三分之一左右。
小貼士:輸出文件格式的具體設置
MPEG項: 和H.264相關的有三項:H.264 Baseline、H.264 Main和H.264High,其編碼的畫面質量從低到高,通常選擇H.264 Main就可以了。
Video項:設置制式NTSC或PAL,最好選擇與源文件一致的制式,以保證轉換效果并減少轉換時間。
Stream項:設置流格式,主要有三種:Elementary、Program和Transport,HDTV通常使用最后一種格式,因此選擇Transport(Video+Audio)項較為合適。
Audio項:設置音頻格式,使用Layer2和AAC均可。點擊Details按鈕彈出輔助設置對話框,在此設置碼率(Bitrate)以及音頻格式等,還可以利用Muxer欄的選項分割HDTV文件。點擊Video欄中的Advanced按鈕,可更詳細地設置視頻參數。不建議普通用戶修改。
回放:幫暴風影音搞定H.264
H.264的解碼器現在太多了,不過Moonlight H.264 Video Decoder格外好一些。這款HDTV解碼器的品質得到了廣泛的認可,幾乎成了HDTV的標準解碼器。下面講講怎么把它和常用的暴風影音結合起來。
安裝Moonlight H.264 Video Decoder,完成后啟動暴風影音,選擇“查看→選項”菜單,彈出選項對話框。點擊“濾鏡”項下的“管理”子項,再在右邊的“管理”頁中點擊“添加濾鏡”按鈕。
彈出選擇濾鏡對話框,點擊“瀏覽”按鈕,到C:\Program Files\Common Files\Moonlight文件夾中找到h264dec.ax濾鏡,將其加入,這樣Moonlight H.264 Video Decoder解碼器就添加到暴風影音中。最后別忘了在“管理”頁中將Moonlight H.264 Video Decoder設為“首選”。
支招:回放吃力的問題
試著播放剛才壓縮的HDTV,暴風影音已能正常解碼,畫面也很精致,與源文件相比,畫質損失很小,可就是太卡了!H.264非??简?#xff23;PU的運算能力。本來MPEG2格式的解碼,就讓許多CPU敗下陣來,若無支持HDTV硬解壓的顯卡幫忙,非得有頂級的配置才能使播放較為流暢。而H.264的算法比MPEG2更復雜,如果純軟件解碼,即使是目前頂級的配置,解碼高分辨率H.264-HDTV也比較吃力。
還好,ATI和Nvidia都有支持H.264硬解碼的GPU推出。ATI的R520即使在較低配置下,也可以流暢地解碼H.264-HDTV,只是價位不那么平易近人。而Nvidia方面,因為Geforce6/7系列GPU都內建PureVideo視頻引擎,只需升級PureVideo,即可使Geforce6/7系列支持H.264解碼,這一點比較實惠。至于解碼效率,雖不及采用純硬件解碼模式,但比純軟件解碼還是強些。Nvidia稱,在Forceware85的支持下,6600GT之后NvidiaGPU產品都可以全速解碼1080p高清晰H.264視頻。CES2006上曾有人用Geforce7800演示H.264解碼,效果還不錯。
H.264標準的由來
1998年,視頻編碼專家組(ITU-TVCEG)啟動了H.26L工程,旨在研制新的視頻編碼壓縮標準,要做到盡可能地簡單直觀,同時網絡適應性要足夠好,以適合廣播、存儲、流煤體等交互或非交互式應用。
2001年12月,VCEG和運動圖像專家組(ISO/IECMPEG)組成聯合視頻組(JVT),在H.26L基礎上研制出H.264/AVC編碼標準,于2003年3月正式獲得ISO/IEC批準。
在網絡時代,視頻往往要借助網絡進行傳播,這就要求一個好的視頻方案能適應各種網絡應用及網絡類型。H.264/AVC無疑做到了這點。它包含兩個層次:視頻編碼層(VCL)和網絡抽象層(NAL),前者主要致力于有效地表示視頻內容,后者則規范視頻數據的格式,主要是提供頭部信息,以適合各種媒體的傳輸和存儲。
H.264/AVC的高壓縮率及其優良的網絡特性,使它可能在網絡電話、視頻點播、IPTV、視頻會議、視頻聊天、遠程教學、廣播電視、HDTV、流媒體服務、3GPP多媒體信息服務、視頻郵件等方面得到廣泛的應用。
轉自:http://blog.csdn.net/sunshine1314/article/details/712401 H.264開源解碼器評測Peter Lee 2006.05.07 videosky.9126.com
?
2003年5月,當H.264編碼標準草案發布時,很多人都覺得H.264太復雜,不宜實用。眨眼間3年過去了,以往的論斷、疑惑被如今的現實沖洗的干干凈凈。隨著硬件性能的提高和視頻編碼工作者對H.264的不斷優化,如今的H.264已完全實用,最新的達芬奇芯片上能實現D1分辨率(720*480)視頻的實時編碼,而對于解碼,普通的PC機就能實現x264編碼的DVDrip電影的流暢播放??v觀過去的三年,有多少人對H.264傾注了熱情和汗水才換來今天的成績,而那些H.264的開源項目以及參與這些項目的開發者自然是功不可沒。
本文評測的是作者接觸過的H.264開源解碼器,包括:JM decoder, T264 decoder, x264 decoder, ffmpeg libavcodec, Intel IPP simple player。評測的內容有:對H.264特性的支持、解碼速度以及二次開發難易程度。
?
一、H.264開源解碼器介紹
1、JM decoder
JM decoder是H.264的官方源碼,通常也稱為校驗模型。其特點是支持特性好,實用性差。本文選用的程序是JM86,不支持high profile,因為本文不對high profile部分進行實驗比較。
NOTE: JM一直沒有做實用化方面的努力,所以其解碼速度代表的是2003年的水平。
?
2、T264 decoder
T264是國內的開源項目,T264 decoder的程序做過匯編優化,速度還可以,但只能解T264本身的碼流。作者對T264 decoder version 0.14(2005-3-29)作了修改,支持baseline的解碼。
?
3、x264 decoder
x264本沒有decoder,但其包含decoder的部分函數雛形,猜想作者在一開始時是準備實現decoder,后來可能是因為有了ffmpeg,就放棄了這個想法(純粹屬于猜測,呵呵)。
本文的x264 decoder是作者在x264 svn check out 2005.12.26的基礎上實現的,支持baseline的解碼。
?
4、ffmpeg libavcodec
ffmpeg是一個大項目,它包含各種音視頻標準的codec,還支持各類file format(.avi, .mp4, .mkv and etc)的parsing。所以,很多開源項目都有直接或間接地采用了ffmpeg,如mplayer播放器就是直接采用了ffmpeg,而mpc播放器則是先采用了ffdshow filter,而ffdshow又采用了ffmpeg。ffmpeg是一個非常棒的音視頻編解碼庫,支持的標準非常全,而且編解碼速度也很快。
本文實驗采用的是cvs check out 2006.02.20的版本,作者對其中的apiexample demo進行了簡單的修改,用于解碼h.264碼流
?
5、Intel IPP simple player
Intel的IPP庫,全稱為Integrated Performance Primitives,在Intel的各種處理器平臺(IA-32, Itanium, xscale and etc)上實現了信號處理常用算法、常用數學運算及音視頻編解碼算法等等。IPP給我的第一感覺是,在Intel的處理器平臺上,它實現的各種算法應該是最快的,至于實際結果如何,待等到實驗比較后見分曉。
本文采用的IPP庫版本為IA32 5.1.017?評估版
Intel IPP simple player是用于播放各種音視頻文件的簡單播放器,用c++實用,具體算法調用IPP庫來實現。本文采用的simple player版本是5.0.017
?
二、對于H.264特性的支持
1、JM86 decoder
support baseline, extended, main profile
?
2、T264 decoder
baseline
?
3、x264 decodeer
baseline
?
4、ffmpeg libavcodec
support baseline, main profile, high profile except the feature: paff, mbaff…
?
5、Intel IPP simple player
support baseline and main profile
?
【簡單結論】
解碼速度:ffmpeg > IPP simple player > x264 decoder > t264 decoder > jm86 decoder
以ffmpeg的編碼速度為基準,假設為100fps,則:
IPP simple player:90fps
x264 decoder:50fps
t264 decoder:30fps
jm86 decoder:3fps
?
五、程序開發上的比較
我估計閱讀本文的大部分讀者都是搞開發的,因此,閱讀過程中自然會思考如何在程序開發上借鑒或者采用以上開源的H.264解碼器,下面就針對程序開發上的難易、適用場合等作個比較。
1、JM86 decoder
適合寫paper群體
?
2、T264 decoder
3、x264 decodeer
兩者代碼非常相似,所以就合在一起講了。這兩個源碼的程序結構都比較清晰,支持vc和gcc的編譯環境,但對H.264的特性支持不好,解碼速度和ffmpeg相比,還有差距。
?
4、ffmpeg libavcodec
程序結構比較差,H.264解碼的代碼基本上在h264.c一個文件中,這個文件有8000多行,不利于閱讀。
編譯環境為gcc或MinGW,移植到vc下比較難(我嘗試過)。
解碼速度快(BTW:?通過doom9論壇了解到,目前最快的h.264解碼器是CoreAVC decoder,比ffmpeg快50%左右)。
對于H.264特性的支持好。
?
5、Intel IPP simple player
分兩個方面講:
(a)IPP庫
我覺得是非常棒的,但實現的是H.264解碼(IPP中也有H.264編碼)的一些關鍵函數,如deblock,dct,插值補償等,不能直接拿來用。
其它的缺點:IPP庫是商業軟件,要money的,而且只支持Intel平臺
(b)simple player
開源,用c++寫的,而且是directshow編程,也就是說只支持windows平臺。
其解碼速度比ffmpeg慢10%左右,我覺得原因不在于IPP庫,而是simple player的代碼不夠完善。
總結
以上是生活随笔為你收集整理的【图像处理】H.264开源解码器评测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯云播放器 Demo与调用方法
- 下一篇: 如何保持连接_工高连城 | 连接器连接失