FFMPEG设置 cbr讨论
Q:我采用ffmpeg調(diào)用x264一直出錯(cuò),命令如下
ffmpeg -s 352x288 -r 50 -pix_fmt yuv420p?? -i tmp.yuv tmp.h264
可不可以給點(diǎn)建議,找了很久也沒(méi)有找到解決辦法,錯(cuò)誤時(shí)error while opening encoder for output stream 0.0 maybe incorrect parameters,先謝了
A。-vcodec libx264 沒(méi)加?
加了也是一樣
你把 x264編進(jìn)去沒(méi)
ffmpeg -s 176x144 -pix_fmt yuv420p -r 30 -b 200000 -i foreman_part_qcif.yuv -vcodec libx264 new1.h264
-qmin 10 -qmax 51 -qdiff 4 -me_range 16 -keyint_min 25 -qcomp 0.6
?
boradcasting 或者 streaming 的應(yīng)用,CBR都首要優(yōu)先滿(mǎn)足的條件
現(xiàn)在那些高清電視臺(tái)為什么要使用占用幾十兆的資源的mpeg2 ts流來(lái)播放,一個(gè)主要原因就是因?yàn)閔.264沒(méi)有真正cbr,而mpeg2就有
streaming 應(yīng)用其實(shí)也能處理一定程度的VBR,但是在某些時(shí)候,為了處理VBR碼流的不穩(wěn)定帶來(lái)的開(kāi)銷(xiāo)遠(yuǎn)遠(yuǎn)超過(guò)它帶來(lái)的好處,不如用CBR,甚至多花幾倍的存儲(chǔ)和帶寬都無(wú)所謂
一直很困惑,CBR這種在boradcasting 和 streaming的大型工業(yè)級(jí)的應(yīng)用上非常重要的東西,h.264是怎么考慮的
1、VBR 適合的應(yīng)用場(chǎng)景是媒體存儲(chǔ),而不是網(wǎng)絡(luò)傳輸,因此不要讓武狀元去當(dāng)文官;
2、其實(shí)實(shí)際網(wǎng)絡(luò)傳輸中所謂的 CBR 一般都是 ABR(平均比特率),即只要是單位時(shí)間內(nèi)把碼率控制在額定碼率就可以了,因?yàn)榫幋a輸出本來(lái)就有緩沖可以起到平滑波動(dòng)的作用;
3、你所謂的嚴(yán)格意義上的 CBR 是每一幀都分配同樣的碼字,試想一下,如果某一幀所需要的碼字本來(lái)就很少,而你卻一定要給它分配很多碼字,那不是浪費(fèi)么?另一方面,如果某一幀所需要的碼字本來(lái)就多,而你卻給得很少,那這幀的效果會(huì)很差。這樣編下來(lái),整體序列質(zhì)量會(huì)忽好忽壞地不停發(fā)生跳變,反而對(duì)視覺(jué)沖擊很大;因此 ABR 才是最適合網(wǎng)絡(luò)傳輸?shù)姆桨?#xff1b;
4、無(wú)論是 CBR、ABR 還是 VBR 都是屬于碼率控制,而碼率控制是視頻編碼的開(kāi)放部分,它不會(huì)改變碼流結(jié)構(gòu)的合法性,因此無(wú)論在 MPEG2、MPEG4 還是 H.263、H.264 當(dāng)中都沒(méi)有做規(guī)定;
5、由于目前的視頻編碼標(biāo)準(zhǔn)都是基于塊編碼的混合編碼框架,因此一個(gè)碼率控制算法可以用到任何協(xié)議上(當(dāng)然有時(shí)候需要做點(diǎn)小的改動(dòng)),只不過(guò)是控制效果好不好的問(wèn)題,沒(méi)有哪個(gè) RC 是專(zhuān)屬哪個(gè)協(xié)議的。
樓主的需求就是一種非常硬性的CBR碼率控制解決方案,這種解決方案要做到每一個(gè)幀的輸出比特幾乎相同(或誤差相當(dāng)小,甚至小到可以忽略不計(jì))。上面諸多同仁的討論中已經(jīng)指出,通過(guò)插入(無(wú)效的)比特來(lái)填充幀編碼的比特是一種合理的解決方案,我也認(rèn)為這可能是必要的一種解決方法了。
我是這樣考慮這個(gè)問(wèn)題的:
其一:如果不計(jì)編碼次數(shù),我們可以對(duì)確定的一幀枚舉若干給定QP值的編碼結(jié)果,然后選取不超過(guò)但最接近目標(biāo)比特率的幀編碼QP,再填充無(wú)效比特;也可以在選擇出QP值的基礎(chǔ)上,做宏塊級(jí)枚舉QP,微調(diào)QP值,以達(dá)到更接近目標(biāo)比特率。這樣的一種解決方案想來(lái)沒(méi)有人會(huì)喜歡,因?yàn)榉磸?fù)編碼次數(shù)太多,效率太低。但是這種方法可以近最大可能地保留有效比特。
其二:按照樓主的這個(gè)需求和您給出的圖示,我發(fā)現(xiàn)您的應(yīng)用在1280X534,甚至是1080p。目標(biāo)比特率以Mkbps為單位,在24Hz和30Hz,在高清畫(huà)質(zhì)上做編碼。我的經(jīng)驗(yàn)是,如果給定的比特率足夠高,即將此問(wèn)題放在中高帶寬下的碼率控制的討論中,則樓主的問(wèn)題才具有現(xiàn)實(shí)的意義。因?yàn)橹懈弑忍芈氏碌拇a率控制要比中低比特率下的好控制的多。
我對(duì)這個(gè)問(wèn)題非常感興趣,若有空閑希望做進(jìn)一步的深入。稍早些時(shí)候我也考慮過(guò)這個(gè)問(wèn)題,但是限于知識(shí)面太窄,不清楚具體是否有價(jià)值作這個(gè)問(wèn)題。樓主在討論中給出的應(yīng)用需求和相關(guān)背景非常具有參考意義。
我希望給樓主請(qǐng)教一個(gè)問(wèn)題:我看到你給出的圖是用bitrate viewer 這個(gè)應(yīng)用程序作圖。以前我沒(méi)有見(jiàn)過(guò),效果還挺好。我想問(wèn),這個(gè)應(yīng)用程序是您自己寫(xiě)的還是哪里可以提供的呢?
今晚太困,話不成句,若有閑暇,后作修訂。
總結(jié)
以上是生活随笔為你收集整理的FFMPEG设置 cbr讨论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ffmpeg分析系列
- 下一篇: 。。。。。etc 时域错误隐藏个人理解