日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg解码器优化

發(fā)布時間:2023/12/13 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg解码器优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在以前的視頻項(xiàng)目中,用到了幾種商業(yè)版的H.264解碼器。雖然性能穩(wěn)定,支持DXVA或CUDA,在高清視頻播放效果上不錯,但是存在一個共同的缺陷-存在幀間延遲。經(jīng)過我的測算,大概有3幀的緩沖延遲。當(dāng)幀率在20fps以上時,所帶來的延遲小于150毫秒,還不算明顯。但是在低幀率的情況下,延遲顯得非常大。

????? 為了解決這個問題,擬將source和decoder寫成一個filter,避免filter間傳輸可能導(dǎo)致的幀間緩沖延遲,這樣就不得不研究開源的H.264 decoder軟件。這段時間,一直埋頭研究ffmpeg中的h.264 decoder源碼。對于新手來說,還是挺有挑戰(zhàn)性的,因?yàn)橐曨l播放框架基于directShow,必須在VC環(huán)境下開發(fā),而ffmpeg源碼卻采用VC不支持的C99標(biāo)準(zhǔn),ffmpeg的API庫無法直接編譯使用。

我的工作計(jì)劃,可以劃分為三個階段:第一階段是從網(wǎng)上下載了ffmpeg工程組成員hust_xcl從ffmpeg中剝離的H.264解碼器包,可以完全基于VC編譯和運(yùn)行。通過它驗(yàn)證了采用ffmpeg的H.264 decoder,以緊耦合方式調(diào)用播放,沒有幀間延遲。雖然解決了穩(wěn)定性,但是視頻質(zhì)量稍差,并且性能低,在我的雙核N卡機(jī)子上解碼D1只能達(dá)到110fps。經(jīng)過分析,覺得是源碼版本過于陳舊,而且不支持CPU加速指令。其間,還試驗(yàn)了hax264和ffdshow-tryout中的VC工程源碼,視頻質(zhì)量有所改善,但是性能方面改善有限,解碼D1提高到130fps。

????? 在第二階段中,采用ffmpeg-0.5版,在mingw環(huán)境下采用gcc編譯,然后調(diào)用VC鏈接,生成可被VC所使用的動態(tài)庫。之所以這樣做,是因?yàn)閒fmpeg所帶的CPU匯編優(yōu)化指令,VC無法支持。gcc編譯器生成的文件明顯要比VC大,通過ffmpeg默認(rèn)編譯生成的libavcodec.dll文件居然有11M之多。只好在configure中增加許多限制選項(xiàng),找到一種合適的選項(xiàng)組合:
./configure? --disable-static --enable-shared --enable-memalign-hack --disable-debug --disable-network --disable-vhook --disable-muxers --disable-mpegaudio-hp --disable-ffserver --disable-ffplay --disable-filters --disable-devices --disable-protocols --disable-demuxers --disable-muxers --disable-encoders --disable-decoders --disable-parsers --disable-bsfs --enable-decoder=h264
通過以上方式所生成的libavcodec.dll減小到1.6MB,性能方面也顯著提高,在SSE3指令加速下,解碼D1達(dá)到210fps,比第一階段提高了60%。

????? 雖然第二階段提高了不少,但與商業(yè)版解碼器相比,還是有明顯差距的。coreavc在同樣環(huán)境下,軟解可以達(dá)到300fps,在GT8600顯卡支持下的CUDA運(yùn)行模式更是高達(dá)360fps。第三階段還正在實(shí)施中,基于當(dāng)前的ffmpeg-mt源碼進(jìn)行,CPU加速指令不僅可以升級到SSE4.2,而且支持多核處理,性能將會更上一個臺階。

???? 開源的東東雖然鼓搗起來經(jīng)常走彎路,缺乏穩(wěn)定可預(yù)測的開發(fā)環(huán)境,但是深入下去有時會有意想不到的成就感。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的ffmpeg解码器优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。