流媒體動(dòng)態(tài)碼率自適應(yīng)方案
流控(動(dòng)態(tài)碼率調(diào)整)機(jī)制:
1、緩沖區(qū)(視頻輸入、網(wǎng)絡(luò)收發(fā))。
2、socket緩存監(jiān)測(cè)。
3、MTU控制。
4、丟幀處理與檢測(cè)。
5、調(diào)整碼率(根據(jù)目前的網(wǎng)絡(luò)丟幀狀況,來(lái)決定碼率降低幅度)。
6、I、P幀處理,如果發(fā)現(xiàn)收到的P幀不完整,立即丟掉該P(yáng)幀;如果發(fā)現(xiàn)收到的I幀不完整,丟掉整個(gè)GOP。
根據(jù)網(wǎng)絡(luò)實(shí)時(shí)狀況,上層丟幀來(lái)降低碼率;定時(shí)判定網(wǎng)絡(luò)狀況,根據(jù)多次定時(shí)的網(wǎng)絡(luò)結(jié)果,來(lái)深層次調(diào)整碼率。
一、實(shí)時(shí)根據(jù)網(wǎng)絡(luò)狀況來(lái)調(diào)整碼率
如果網(wǎng)絡(luò)狀況不好,采用上層降低碼率方案。暫時(shí)拋掉部分原始幀,這些幀不參與編碼;通過(guò)這種最上層的簡(jiǎn)單方式來(lái)降低碼率。
二、深層次調(diào)整碼率判定
分析一下,丟幀的程度與持續(xù)時(shí)間
1、網(wǎng)絡(luò)狀況一般
維持目前的狀況,不做特殊深層次處理。
2、 網(wǎng)絡(luò)狀況較差
深層次降低碼率方案
1)降低源頭幀率(譬如采樣幀率,由25變?yōu)?0)。
2)降低目標(biāo)分辨率(譬如480*360的圖像改為400*300的碼率)
降低幅度,由網(wǎng)絡(luò)狀況決定,不采用連續(xù)階梯降碼率。
3、網(wǎng)絡(luò)狀況良好
在長(zhǎng)時(shí)間內(nèi)觀測(cè)到網(wǎng)絡(luò)狀況良好時(shí)候,可以發(fā)一些重復(fù)測(cè)試圖片或者無(wú)效測(cè)試數(shù)據(jù)來(lái)檢測(cè)是否需要丟幀。如果會(huì)丟幀,則不再發(fā)送重復(fù)圖片;否則,采用深層次調(diào)整碼率的方案緩慢提升碼率。
注意:對(duì)于降低碼率而言,一般要快速、幅度大一些;對(duì)于提升碼率而言,一般要緩慢、幅度小一下。提升碼率比降低碼率,更為慎重!