雷驚鵬
(1.合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,安徽合肥23000;2.安徽國防科技職業(yè)學(xué)院信息工程系,安徽六安237011)
視頻泛指將一系列靜態(tài)影像以電信號方式加以捕捉、紀(jì)錄、處理、儲存、傳送與重現(xiàn)的各種技術(shù).不斷發(fā)展的網(wǎng)絡(luò)技術(shù)和網(wǎng)絡(luò)帶寬的快速增長,使視頻業(yè)務(wù)應(yīng)用得以普及.
視頻信息由于其直觀性,容易被人的視覺接受.由于其包含的信息量極大,因此需要有良好的帶寬支持.在諸多形式的多媒體應(yīng)用中,低延遲是傳輸?shù)幕疽?,用戶對視頻信息的延遲和對延遲的變化相對比較敏感.但是在傳輸中偶爾因?yàn)閿?shù)據(jù)幀丟失導(dǎo)致畫面出現(xiàn)短暫停頓、流暢性欠佳等情況,則允許控制在一定的范圍.對視頻捕捉設(shè)備采集到的信號需要經(jīng)過變換、量化等一系列操作后進(jìn)行編碼,例如預(yù)測編碼、變換編碼、統(tǒng)計(jì)編碼,即三大經(jīng)典編碼方法[1].
國際標(biāo)準(zhǔn)化組織(ISO)和國際電信聯(lián)盟(ITU-T)等標(biāo)準(zhǔn)化組織制定了一系列關(guān)于視頻編碼的標(biāo)準(zhǔn).H.264編碼標(biāo)準(zhǔn)又稱作AVC(Advanced Video Coding)標(biāo)準(zhǔn),也被稱作ITU-T H.264建議和MPEG-4的第10部分的標(biāo)準(zhǔn)[2].
相對于其他現(xiàn)有的視頻編碼標(biāo)準(zhǔn),H.264希望在相同帶寬下提供更好的視頻質(zhì)量.H.264將視頻編解碼的流程分成5個(gè)模塊:幀內(nèi)預(yù)測和幀間預(yù)測、變換和反變換、量化和反量化、環(huán)路濾波、熵編碼.在視頻通信、存儲領(lǐng)域,H.264視頻編碼標(biāo)準(zhǔn)都得到了廣泛應(yīng)用,例如,視頻電視電話會議、遠(yuǎn)程教育等.H.264編碼算法劃分為VCL和NAL兩個(gè)邏輯層.相對于H.263+算法,H.264采用了更加靈活的VCL算法,核心壓縮引擎、宏塊、片等使用了新的編碼語法,編碼效率得到有效提高.H.264標(biāo)準(zhǔn)在VCL和NAL之間定義的接口采用分組方式,完成兩個(gè)層次間的系統(tǒng)層分割,使得VCL和NAL可以獨(dú)立完成各自的任務(wù).
H.264視頻編碼標(biāo)準(zhǔn)也在不斷地修訂和完善,目前對它的理論研究主要集中在分析其算法結(jié)構(gòu)和視頻信號延時(shí),以有效提高視頻壓縮效率.編碼時(shí)幀間預(yù)測的運(yùn)動估計(jì)和模式選擇耗費(fèi)了大量的時(shí)間[3],對視頻壓縮編碼的效率有很大影響,而類似運(yùn)動估計(jì)、快速模式算法等固定算法的形成,加深了對該運(yùn)動估計(jì)和模式的研究,有效提高了視頻壓縮的能力和視頻信息的實(shí)時(shí)穩(wěn)定性.在極低碼率(32-128Kbps)的情況下,H.264與MPEG-4相比具有性能倍增效應(yīng),即:相同碼率的H.26L媒體流和MPEG-4媒體流相比,H.26L擁有大約3個(gè)分貝的增益(畫質(zhì)水平倍增).32Kbps的H.26L媒體流,其信躁比與128K的MPEG-4媒體流相近.即在同樣的畫面質(zhì)量下,H.264的碼率僅僅為 MPEG-4的四分之一[4].
本文借助開源代碼實(shí)現(xiàn)了基于H.264編碼的網(wǎng)絡(luò)視頻發(fā)送和接收系統(tǒng),客戶端接收并對數(shù)據(jù)解碼后進(jìn)行播放.在視頻實(shí)時(shí)傳輸業(yè)務(wù)中可以采用.
本文提出的視頻發(fā)送/接收系統(tǒng)的總體框架如圖1所示:
圖1 基于H.264編碼的C/S架構(gòu)視頻發(fā)送/接收系統(tǒng)
(1)視頻采集設(shè)備作為信息來源,負(fù)責(zé)視頻信號的接收和預(yù)處理;
(2)服務(wù)器端利用編碼函數(shù)encode(),完成以下主要工作:
1)初始化編碼器參數(shù);
2)為待編碼幀分配內(nèi)存空間;
3)循環(huán)完成幀層次編碼.
(3)客戶端利用解碼函數(shù)完成數(shù)據(jù)解碼,并進(jìn)行播放.
服務(wù)器端需要對H.264視頻流進(jìn)行RTP打包,經(jīng)過封裝后,形成適合網(wǎng)絡(luò)傳輸格式的數(shù)據(jù)包.
(1)編碼器選用開源的T264編碼器,主要由六部分組成:幀內(nèi)預(yù)測、幀間預(yù)測、DCT變換和量化、Zigzag掃描、環(huán)路濾波、熵編碼[5].
(2)T264_encode()編碼函數(shù)調(diào)用eg_init()函數(shù)對視頻碼流進(jìn)行指針初始化,調(diào)用decision_slice_type函數(shù)()判斷當(dāng)前的幀類型,根據(jù)確定的類型調(diào)用相關(guān)函數(shù)初始化NAL[6]單元頭信息,最后再通過T264_encode_frame()函數(shù)進(jìn)行編碼,并將編碼后的數(shù)據(jù)寫入NAL單元結(jié)構(gòu)中.設(shè)計(jì)傳輸使用的RTP數(shù)據(jù)頭如下:
編碼函數(shù)T264_encode()主要完成編碼器參數(shù)初始化及T264結(jié)構(gòu)體的初始化,并為待編碼的原始圖像幀分配內(nèi)存空間.
(3)編碼Filter的基類選擇CTransformFilter,以適應(yīng)不同類型的傳輸媒體.該類的實(shí)現(xiàn)中,通過CheckInputType函數(shù)完成對媒體類型的檢查.Filter經(jīng)編譯后生成T264Encoder.ax文件,對該文件注冊后即可作為獨(dú)立的COM組件.
(4)在服務(wù)器和客戶端可加入緩存機(jī)制,實(shí)現(xiàn)對視頻抖動的控制.
通過修改開源的T264編解碼器能實(shí)現(xiàn)基于H.264編碼視頻的采集與播放,對信息傳輸?shù)馁|(zhì)量控制是需要在此基礎(chǔ)上進(jìn)一步改進(jìn)的工作.設(shè)置基于終端的QoS解決策略有助于視頻傳輸質(zhì)量的改進(jìn)和控制,通過在終端增加速率控制、誤碼控制等QoS機(jī)制,在網(wǎng)絡(luò)相對穩(wěn)定的條件下能夠做到一定的QoS保證,從而提高圖像的質(zhì)量.
[1]蔡安妮,孫景鰲.多媒體通信技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社,2004.
[2]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)——H.264/AVC[M].北京:人民郵電出版社,2005.
[3]梁睿.H.264幀間預(yù)測模式選擇和快速運(yùn)動估計(jì)優(yōu)化算法[EB/OL].http://www.paper.edu.cn/releasepaper/content/200701 -151,2007 -01 -12.
[4]吳峰,貝悅,李輝.H.264 編碼新技術(shù)展望[J].軟件,2011,(11):73-75.
[5]譚超,王庫,傅穎.基于DM642的X264開源代碼實(shí)現(xiàn)的研究[J].微計(jì)算機(jī)信息,2007,(35):181 -183.
[6]孔群娥,曾學(xué)文,劉馬飛.基于x264實(shí)現(xiàn)H.264的時(shí)域可伸縮編碼[J].微計(jì)算機(jī)應(yīng)用,2011,(3):24 -28.