摘 要:文章介紹了一套基于軟件的實(shí)時(shí)音視頻通信系統(tǒng)。通過(guò)該系統(tǒng)可以以軟件的方式實(shí)現(xiàn)靈活、高效的音視頻采集、壓縮和傳輸。
關(guān)鍵詞:軟件;音頻;視頻;采集;壓縮;傳輸
中圖分類號(hào):TN919.8
本文闡述了一種基于軟件的IP音視頻通信系統(tǒng)解決方案。本系統(tǒng)優(yōu)點(diǎn):音視頻采集設(shè)備簡(jiǎn)單,投資??;采用軟件壓縮,便于升級(jí),可按需定制;純C語(yǔ)言開發(fā),效率高,易于集成和移植,可以在Windows和Linux操作系統(tǒng)上運(yùn)行;傳輸與采集模塊分離,便于維護(hù);采用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議棧設(shè)計(jì),擴(kuò)展性好;可以支持多種音視頻采集和播放架構(gòu);不需要架設(shè)服務(wù)器,無(wú)中心,抗毀性強(qiáng);支持多種音視頻編解碼標(biāo)準(zhǔn),可擴(kuò)展;可以根據(jù)網(wǎng)絡(luò)狀況限制視頻編解碼器碼率,減輕對(duì)網(wǎng)絡(luò)的壓力,適于在低帶寬條件下使用;可支持點(diǎn)到點(diǎn)音視頻通信,同時(shí)支持音頻組播通信;基于PC平臺(tái)開發(fā),架設(shè)簡(jiǎn)單,無(wú)需額外硬件支持;不需要SIP協(xié)議握手,網(wǎng)絡(luò)開銷低。
1 系統(tǒng)描述
本系統(tǒng)可以支持的音頻采集與播放架構(gòu)包括:mme(Windows)、alsa(Linux)、oss(Linux)和arts(Linux)等??梢灾С值囊曨l采集與播放架構(gòu)包括:v4w(Windows)、directshow(Windows)、v4l(Linux)、v4l2(Linux)和SDL(Linux)等。
本系統(tǒng)可以支持的視頻編解碼標(biāo)準(zhǔn)包括H264、H263、theora、mp4v和x-snow等。本系統(tǒng)可支持的音頻編解碼標(biāo)準(zhǔn)細(xì)節(jié)如表1。
RTP協(xié)議(Real-time Transport Protocol)提供具有實(shí)時(shí)特征的、端到端的數(shù)據(jù)傳送服務(wù),可用來(lái)傳送聲音和運(yùn)動(dòng)圖像數(shù)據(jù)。在這項(xiàng)數(shù)據(jù)傳送服務(wù)中包含了裝載數(shù)據(jù)的標(biāo)識(shí)符、序列計(jì)數(shù)、時(shí)戳和傳送監(jiān)視。通常RTP的協(xié)議元是用UDP協(xié)議元來(lái)裝載的,并利用UDP的復(fù)用和校驗(yàn)和來(lái)實(shí)現(xiàn)RTP的復(fù)用。RTP包括兩個(gè)關(guān)系十分密切的子協(xié)議:實(shí)時(shí)傳輸協(xié)議(RTP),用于傳輸實(shí)時(shí)數(shù)據(jù);實(shí)時(shí)控制協(xié)議(RTCP),用于監(jiān)視網(wǎng)絡(luò)的服務(wù)質(zhì)量[2]。RTP包協(xié)議格式如圖2所示。
圖2 RTP協(xié)議格式
語(yǔ)音組播基于組播成員管理協(xié)議IGMP(Internet Group Management Protocol)。IGMP協(xié)議作用在主機(jī)和與主機(jī)直接相連的組播路由器之中,主機(jī)使用IGMP協(xié)議通知本地邊緣組播路由器,告知其想加入的組播組,組播路由器通過(guò)IGMP協(xié)議來(lái)維護(hù)組播組成員列表,并定期發(fā)送詢問(wèn)信息詢問(wèn)組播成員是否在線[3]。
圖3 IGMPv2協(xié)議格式
2 模塊實(shí)現(xiàn)
圖4 系統(tǒng)軟件模塊結(jié)構(gòu)圖
本系統(tǒng)軟件模塊結(jié)構(gòu)圖如圖4所示。oRTP庫(kù)主要實(shí)現(xiàn)RTP協(xié)議棧,尊從開源LGPL許可證。ffmpeg是一個(gè)開源免費(fèi)跨平臺(tái)的視頻和音頻流解決方案,屬于自由軟件,依據(jù)你選擇的組件尊從開源LGPL(GNU Library General Public License)或開源GPL(GNU General Public License)許可證。speex是一套主要針對(duì)語(yǔ)音的開源免費(fèi),無(wú)專利保護(hù)的音頻壓縮格式庫(kù)。mediastreamer2庫(kù)主要負(fù)責(zé)音視頻編解碼、采集、播放和回音消除,尊從開源GPL許可證。
msx264庫(kù)是一個(gè)H264視頻編碼器插件,尊從開源GPL許可證。msilbc庫(kù)是iLBC語(yǔ)音編解碼器插件,尊從開源GPL許可證。msbcg729是Sipro實(shí)驗(yàn)室開發(fā)的基于G729A標(biāo)準(zhǔn)的專利語(yǔ)音編解碼器插件。msamr庫(kù)是AMR窄帶專利語(yǔ)音編解碼器插件。mssilk庫(kù)是軟電話Skype專用的專利語(yǔ)音編解碼器插件。mediastreamer2可以以插件的形式擴(kuò)展msx264、msilbc、msbcg729、msamr和mssilk。筆者主要開發(fā)了圖4中上層API調(diào)用部分。
3 應(yīng)用效果
為了驗(yàn)證通信效果,筆者搭建了3臺(tái)筆記本電腦組成的演示系統(tǒng),分別安裝Windows XP、Windows 7和ubuntu Linux操作系統(tǒng),筆記本之間通過(guò)WiFi互聯(lián),演示系統(tǒng)沒有中心服務(wù)器,每個(gè)筆記本的地位是平等的,任何一臺(tái)筆記本關(guān)機(jī)不會(huì)影響其他筆記本的正常音視頻通信,如圖5所示。
圖5 演示系統(tǒng)結(jié)構(gòu)圖
任意2臺(tái)筆記本之間可以進(jìn)行點(diǎn)到點(diǎn)音視頻通信,在采用H264視頻編解碼標(biāo)準(zhǔn)的情況下,限制視頻通信占用帶寬上限100kbps,PC1和PC2之間的視頻通信效果如圖6所示,視頻分辨率352×288。左側(cè)大窗口是PC2傳給PC1的視頻,右下方的小窗口是PC1本地?cái)z像頭采集的視頻。右側(cè)大窗口是PC1傳給PC2的視頻,右下方的小窗口是PC2本地?cái)z像頭采集的視頻。
圖6 視頻通信效果圖
如圖6,在限制msx264編碼器碼率100kbps條件下,PC1和PC2之間的視頻通信效果比較清晰。
3臺(tái)筆記本可以實(shí)現(xiàn)點(diǎn)到點(diǎn)或者組播(1發(fā)2收)語(yǔ)音通信,音質(zhì)清晰。算上IP/UDP頭等協(xié)議棧開銷,iLBC占用帶寬約30kbps,speex占用帶寬約18kbps,寬帶speex占用帶寬約26kbps。
4 結(jié)束語(yǔ)
本系統(tǒng)是一套完整的音視頻通信解決方案,擴(kuò)展性好,通用性強(qiáng),可跨平臺(tái)移植,架設(shè)簡(jiǎn)單,抗毀性強(qiáng),可以在較低帶寬條件下進(jìn)行清晰、實(shí)時(shí)的點(diǎn)到點(diǎn)/組播音視頻通信。
參考文獻(xiàn):
[1]Comparison of audio formats[EB/OL].http://en.wikipedia.org/wiki/Comparison_of_audio_formats.
[2]Zourzouvillys,T.Rescorla,E.An Introduction to Standards-Based VoIP:SIP,RTP,and rnet Computing,IEEE Journal gazines, lume:14,Issue:2,Publication Year:2010,Page(s):69-73.
[3]Tian Yonghui;Hu,R.A Resolution for IGMP V3 Protocol Using Finite State Machine.2012 International Conference on Computer Science and Electronics Engineering(ICCSEE).IEEE Conference Publications.Volume:2,Publication Year:2012,Page(s):517-520.
作者簡(jiǎn)介:謝佳(1982-),男,北京人,工程師,碩士,從事通信應(yīng)用軟件總體設(shè)計(jì);徐山峰(1981-),男,北京人,工程師,碩士,從事大型電子信息系統(tǒng)總體設(shè)計(jì);梁靜(1991-),女,北京人,助理工程師,學(xué)士,從事通信應(yīng)用軟件開發(fā)。
作者單位:中國(guó)電子科學(xué)研究院,北京 100041