H.264編碼器是基于DSP技術(shù)開發(fā)的一款高質(zhì)量的硬件編碼器,它擁有高度的壓縮比及高速的運算內(nèi)核,支持業(yè)界最常用的壓縮算法H.264/AVC編碼格式,可獨立處理每一路視音頻,內(nèi)嵌去隔行掃描算法,視頻碼率支持從64Kbps-1.5Mbps,高效的色彩還原機制,視頻質(zhì)量達(dá)到運營級別水平。
h264 以及x264編碼器相關(guān)知識
1、 判斷I幀或IDR幀
00 00 00 01 65 、、、、、、 IDR幀
00 00 00 01 41 、、、、、、 I 幀或P幀
2、 X264 keyint 設(shè)置的是IDR幀的間隔,不是I幀
3、 應(yīng)該首先發(fā)IDR,可以保證后面的P幀可以正確解碼。注意不是普通I幀,因為普通I幀后面的P幀有可能依賴普通I幀前面的幀(最多16個參考幀)
4、 做演示時,可以可慮設(shè)置Q值,而不是bitrate,x264的碼流控制有時有問題,導(dǎo)致畫面不清晰。但是Q值不能保證比特率,網(wǎng)絡(luò)狀態(tài)不好的時候,可能導(dǎo)致問題
//the bitrate in kilobits/sec
int err = x264_param_parse(&mParam, "bitrate", ltoa(mBitrate, str, 10));
// use q instead of rate control, can keep video quality good, but can not ensure bitrate
int err = x264_param_parse(&mParam, "qp", "26");
h264 以及x264編碼器分層結(jié)構(gòu)
H.264編碼器輸出的Bit流中,每個Bit都隸屬于某個句法元素。句法元素被組織成有層次的結(jié)構(gòu),分別描述各個層次的信息。
在H.264 中,句法元素共被組織成 序列、圖像、片、宏塊、子宏塊五個層次。在這樣的結(jié)構(gòu)中,每一層的頭部和它的數(shù)據(jù)部分形成管理與被管理的強依賴關(guān)系,頭部的句法元素是該層數(shù)據(jù)的核心,而一旦頭部丟失,數(shù)據(jù)部分的信息幾乎不可能再被正確解碼出來,尤其在序列層及圖像層。
在 H.264 中,分層結(jié)構(gòu)最大的不同是取消了序列層和圖像層,并將原本屬于序列和圖像頭部的大部分句法元素游離出來形成序列和圖像兩級參數(shù)集,其余的部分則放入片層。
參數(shù)集是一個獨立的數(shù)據(jù)單位,不依賴于參數(shù)集外的其他句法元素。一個參數(shù)集不對應(yīng)某一個特定的圖像或序列,同一序列參數(shù)集可以被多個圖像參數(shù)集引用,同理,同一個圖像參數(shù)集也可以被多個圖像引用。只在編碼器認(rèn)為需要更新參數(shù)集的內(nèi)容時,才會發(fā)出新的參數(shù)集。
復(fù)雜通信中的碼流中可能出現(xiàn)的數(shù)據(jù)單位:
IDR: 在H.264中,圖像以序列為單位進行組織。一個序列的第一個圖像叫做 IDR 圖像(立即刷新圖像),IDR 圖像都是 I 幀圖像。H.264 引入 IDR 圖像是為了解碼的重同步,當(dāng)解碼器解碼到 IDR 圖像時,立即將參考幀隊列清空,將已解碼的數(shù)據(jù)全部輸出或拋棄,重新查找參數(shù)集,開始一個新的序列。這樣,如果前一個序列出現(xiàn)重大錯誤,在這里可以獲得重新同步的機會。IDR圖像之后的圖像永遠(yuǎn)不會使用IDR之前的圖像的數(shù)據(jù)來解碼。 IDR 圖像一定是 I 圖像,但 I 圖像不一定是 IDR 圖像。I幀之后的圖像有可能會使用I幀之前的圖像做運動參考。
- PC官方版
- 安卓官方手機版
- IOS官方手機版