基于DirectShow的MPEG-4視頻傳輸系統(tǒng)的研究與實(shí)現(xiàn)
在網(wǎng)絡(luò)帶寬比較低的情況下(如十幾KBps),數(shù)據(jù)丟幀現(xiàn)象比較嚴(yán)重,這對(duì)于圖像質(zhì)量有很大的影響。我們采用拆幀(拆成1400個(gè)字節(jié))以后再發(fā)送的方法,來降低丟幀率。接收端收到數(shù)據(jù)后,再把屬于同一視頻幀的數(shù)據(jù)再組起來。
網(wǎng)絡(luò)發(fā)送接收程序流程圖如圖3所示:
圖3 網(wǎng)絡(luò)發(fā)送接收程序流程圖
對(duì)程序流程圖的說明如下:
(1)發(fā)送端拆幀的算法如下:
然后把屬于同一視頻幀的數(shù)據(jù)組好,發(fā)送到解碼Filter。
經(jīng)過測試(在CDMA1.X網(wǎng)絡(luò)下),采用拆幀方法傳輸視頻數(shù)據(jù)比直接發(fā)送丟包率更低,傳輸質(zhì)量有了很大的提高。
3.3 數(shù)據(jù)解碼及回放的實(shí)現(xiàn)
解碼Filter使用的是Divx提供的開源解碼器,在接收Filter的后面接上該解碼Filter即可,最后接上Renderer Filter就可以把接收到的數(shù)據(jù)回放出來。
3.4 實(shí)現(xiàn)幀率控制功能
通過在采集設(shè)備和編碼Filter(DivX Pro(tm) 5.1.1 Codec)之間加入一個(gè)幀率控制Filter來實(shí)現(xiàn)幀率的控制,該Filter相當(dāng)于一個(gè)視頻幀數(shù)計(jì)數(shù)器,每接收到一幀,并不立即把該幀發(fā)給下游的編碼Filter,而是把計(jì)數(shù)器的值加1,當(dāng)計(jì)數(shù)器的值達(dá)到最大值時(shí)才把當(dāng)前收到的幀發(fā)出去。在接收端發(fā)控制幀率命令給采集端可以很方便的實(shí)現(xiàn)幀率的遠(yuǎn)端控制。
程序片斷如下:
加了幀率控制Filter的發(fā)送端 Filter Graph 如圖4所示:
圖4 實(shí)現(xiàn)了幀率控制的Filter Graph
4 總結(jié)
該系統(tǒng)采用了DirectShow技術(shù)實(shí)現(xiàn)了MPEG-4視頻數(shù)據(jù)的傳輸,視頻數(shù)據(jù)的傳輸采用了RTP協(xié)議。而且還實(shí)現(xiàn)了遠(yuǎn)端幀率的控制,該系統(tǒng)可以很方便的移植到未來3G網(wǎng)絡(luò)的圖像傳輸系統(tǒng)中。對(duì)編解碼器進(jìn)行研究,采用H.264技術(shù)實(shí)現(xiàn)編解碼Filter是下一步要完成的工作,當(dāng)然在傳輸質(zhì)量(QoS)方面也要深入進(jìn)行研究。
評(píng)論