999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于無線視頻服務器自適應帶寬算法

2012-06-25 07:03:30浩,管
電視技術 2012年9期

馮 浩,管 鮑

(1.武漢郵電科學研究院,湖北 武漢 430074;2.武漢虹信通信技術有限責任公司,湖北 武漢 430074)

衡量無線視頻質量的重要指標是流暢性和實時性。無線網絡傳輸的上行帶寬有限,傳輸的視頻圖像往往容易出現馬賽克和延遲等現象。傳統的無線視頻通信系統主要是單卡的模式,通過一張卡傳輸。這樣利用的網絡帶寬資源大概在300 kbit/s左右,如果網絡狀況好可以達到400 kbit/s左右,這樣得到的視頻圖像也容易出現馬賽克等現象,不能很好地解決無線網絡帶寬不足的問題。本文針在雙模無線視頻通信的基礎上,通過高性能的ARM9芯片控制MC8630無線模塊,這樣將無線網絡資源提高到600 kbit/s,如果網絡狀況好可以達到800 kbit/s左右,很大程度上能避免無線視頻傳輸過程中出現的馬賽克和視頻畫面延時,基本保證了視頻的流暢性和實時性。

1 協議介紹

SIP是一個應用層的控制協議,可以用來建立、修改、和終止多媒體會話的協議。在多媒體通信中完成信令的交互,SIP協議棧主要由eXosip模塊、osip2模塊、osipparser2模塊組成。其中osipparser2主要完成SIP和SDP消息的文本解析器和文本生成器。osip2模塊主要實現事務狀態機的維護和運行,eXosip模塊實現底層socket傳送/接收以及上層的數據處理。SIP協議完成會話還需要和SDP協議配合使用,SDP協議是會話描述協議,主要描述會話名稱和意圖,構成會話的媒體等信息[1]。

實時傳輸協議(Realtime Transport Protocol,RTP),是針對Internet上多媒體數據流的一個傳輸協議,由IETF作為RFC1889發布,現在最新版為RFC3550。RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間信息和實現流同步。RTP本身只保證實時數據的傳輸,并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。RTCP協議負責管理傳輸質量,在當前應用進程之間交換控制信息,提供流量控制和擁塞控制服務。

2 系統結構

本方案主芯片采用TMS320DM368處理器,主頻432 MHz,芯片內部集成有DSP處理器,TI開放其DSP接口,可以支持H.264/MPEG-4的高清編解碼。CY7C65640A的驅動可以直接參考LinuxUSB的驅動,選擇CY7C65640A芯片擴展DM365的USB接口,連接兩個MC8630。本系統采用中興通訊的MC8630芯片,如圖1所示。該芯片是1個CMDA20001x/EVDO Rev.A的3G無線模塊,上行通信速度理論值為1.8 Mbit/s。由于其資料廣泛可以參考該芯片Linux的驅動程序,從而可大大減小軟件開發周期,滿足應用需求。本文重點闡述軟件設計部分[2]。

圖1 系統結構示意圖

3 軟件設計

軟件設計包括嵌入式軟件設計和客戶端軟件設計。其中嵌入式軟件設計包括對MC8630芯片驅動設計和信令交互數據發送軟件設計部分。客戶端軟件設計部分包含解包部分和解碼部分。組幀協議如圖2所示。嵌入式軟件設計按照此協議采集視頻數據并按照H.264組幀,通過USB接口將視頻數據發送給客戶端。客戶端接收雙模發送過來的數據,并將該數據通過FFmpeg解碼庫顯示播放出來。

圖2 組幀協議示意圖

其中B代表byte,幀開頭以B1C1B2C2來區分。Playload定義8為音頻,77為視頻。碼流類型為:0x01代表H.264壓縮,0x02代表MPEG-4壓縮,0x81代表G.711壓縮,0x82代表G.729壓縮,0x83代表MP3壓縮。

雙卡定義的視頻發送策略如圖3所示。雙網卡分別傳送I幀和P幀數據[3]。

圖3 視頻發包示意圖

4 嵌入式軟件設計

4.1 嵌入式軟件驅動設計

MC8630作為塊設備,該芯片提供Linux內核源碼驅動程序,通過移植工作,將該驅動加載到內核當中。經過AT指令配置之后即可使用,當模塊狀態為可用時,通過Linux塊設備操作流程向發送端發送數據。

CY7C65640的驅動設計可以參考通用USB驅動程序設計,大部分配置任務都在驅動程序中完成。驅動程序加載到內核當中,系統上電即可使用[4]。

4.2 應用程序設計

DM368芯片是ARM+DSP雙核結構,利用DSP強大的運算功能,實現對視頻信號的編碼,編碼之后的視頻從DSP傳送到ARM中,經過組幀協議之后等待客戶端的鏈接,一旦接收到視頻請求就將視頻發送出去。無線視頻服務器還需接收客戶端發送過來的云臺控制,OSD參數查詢和視頻分辨力、碼率修改等信令。這些信令控制著終端運行的參數。信令的交互采用的是SIP協議,消息體格式采用的是SDP方式或XML方式,通過SDP協議傳遞RTP視頻流信息;通過XML消息體傳遞云臺控制等信息。

當視頻服務器接收到客戶端發送視頻請求SIP信令時,解析SDP消息體,從m參數中獲取RTP端口,Playload值等信息,然后調用RTP協議根據指定端口將數據發送到客戶端。同時,當視頻服務器接收到客戶端發送的云臺控制等信令時,解析XML消息體,完成對相應結構體的賦值,從而控制著終端運行的參數。

由服務器處理流程得知,應用程序設計包含視頻緩沖區設計部分和信令交互部分。視頻緩沖區完成采集的數據緩存和視頻數據的發送。信令交互部分完成SIP信令交互和RTP信令交互。

4.2.1 視頻緩沖區設計

DM368芯片上運行的是Linux實時操作系統,利用Linux線程間通信的同步與互斥機制和Linux信號量機制來實現視頻緩沖隊列。視頻緩沖隊列定義結構體如下:

隊列相關函數說明包含在sendqueue.c文件當中,QueueInit()函數主要完成緩沖隊列的初始化,客戶端關掉視頻時調用QueueEmpty()函數清空接收隊列,客戶端申請視頻時調用QueueOutput()函數取出隊列數據進行發送,接受客戶端RTCP統計的丟包率如果丟包率大時調用drop_packet()函數丟包,丟棄P幀和緊隨P幀之后的I幀,以降低發送碼流。

4.2.2 信令交互部分設計

主程序在完成初始化之后,主動向客戶端發送1個SIP注冊消息,并開通心跳包線程,每隔2 min發送1次心跳包,心跳包只包含時間信息,客戶端接收到心跳包會返回1個心跳包回應,當心跳包線程超過2 min未收到心跳包,則重新注冊。與此同時在主程序中開啟SIP線程接收客戶端發送過來的SIP信令,定義eXosip_event_t*stEvent接收事件,如果該事件類型為EXOSIP_CALL_INVITE,表示客戶端視頻請求消息,此時調用osipparser2庫函數解析SDP的內容,獲取RTP發送端口,向客戶端的該端口發送RTP數據流。由于RTP庫支持1500的包長度,此處傳輸的長度為1362。同時開啟RTP監聽線程,監聽客戶端發送過來的RTCP包,根據收到的包信息,動態調整發送的碼流大小,當碼流過大時候,此時采取丟包策略調用drop_packet()函數,丟掉P幀和緊隨其后的I幀數據。

嵌入式軟件設計部分主要處理客戶端發送過來的SIP消息、包括云臺控制消息、視頻請求消息,消息的處理如下:

初始化RTP會話,建立RTP連接,開始發送數據。發送SIP回應消息。

5 客戶端軟件設計部分

客戶端軟件設計部分包括解碼部分和信令交互部分。

5.1 信令交互部分

信令交互部分采用的SIP信令控制協議由點擊客戶端界面按鈕來觸發,此處用到的SIP格式有MESSAGE消息和INVITE請求。MESSAGE消息用來處理控制消息和視頻服務器參數獲取、設置消息。INVITE請求用于RTP請求等。消息的組包流程為:1)初始化消息頭、設置消息頭域的值;2)判斷是否帶有消息體,帶有消息體判斷是SDP消息體還是其他消息體,否則進行步驟4);3)初始化SDP消息體,非SDP消息體的時候初始化XML消息體;4)完成SIP字符串的生成,完成SIP協議的發送。其中Content-Type的值是XML的時候設置為application/global_eye_v10+xml。是SDP的時候設置為application/sdp。

舉例RTP請求SIP協議發送的例子[5]。

在客戶端也要開啟SIP監聽消息進程,監聽線程主要監聽CALL消息的回應消息、注冊消息和SIP回應消息。客戶端獲取相應的參數之后,完成界面的更新操作。

5.2 FFmpeg解碼部分

客戶端采用VC++6.0開發,客戶端發送CALL消息申請視頻之后,收到SIP的EXOSIP_CALL_ANSWERED回應消息,然后發送ACK,服務器在接收到ACK之后,開始調用RTP協議發送視頻流。客戶端監聽RTP端口接收數據流設置。定義rtp_event*e接收事件,當e->type=RX_RTP時,將雙模接收到的數據送入inputdata()函數進行組包解碼顯示。由于接收的數據是雙模發送過來的,則需要對接收的數據進行組包、排序處理。根據RTP包的特性,同一幀的數據時間戳TS相等,RTP小包序列號(seq)是連續的。

1)主任務入口函數

當前鏈表指向下一個節點;

6 結束語

本文基于TI公司的DM368芯片,采用雙卡傳輸,采用多鏈路捆綁技術實現視頻數據的安全可靠傳輸,顯著提高了無線網絡傳輸帶寬[4]。文中信令協議采用SIP協議,視頻流的傳輸采用RTP/RTCP協議,該程序框架具有很好的兼容性,只需要簡單的改動就能夠組建大的視頻監控網絡,具有很強的可擴展性,目前該系統已投入使用。

[1]胡棟,劉峰,朱秀昌.實時多模式無線視頻傳輸原型系統的實現[J].通信學報,2006,27(10):110-116.

[2]孫天澤,袁文菊,張海峰.嵌入式設計及 Linux驅動開發指南:基于ARM9處理器[M].北京:電子工業出版社,2005.

[3]尤盈盈.基于嵌入式系統的無線多媒體傳輸系統終端的研究[D].杭州:浙江工業大學,2005:30-34.

[4]吳長樹.一種基于公共移動通信的視頻包多鏈路接收和播放方法:中國,200910241583.6[P].2010-05-12.

[5]翁睿.基于GPRS網絡的自適應碼率視頻傳輸[D].上海:復旦大學,2008.

主站蜘蛛池模板: 欧美一区二区自偷自拍视频| 欧美精品三级在线| 久久久亚洲色| 精品视频在线观看你懂的一区 | 黄片在线永久| 亚洲国产理论片在线播放| 亚洲码在线中文在线观看| 真实国产乱子伦高清| 欧美日韩国产成人高清视频| 精品福利视频网| 成年人久久黄色网站| 婷婷六月激情综合一区| 亚洲不卡av中文在线| 最新国产高清在线| 亚洲日本一本dvd高清| 国产亚洲精品自在久久不卡| 高清无码手机在线观看| 伊人成人在线| 在线观看精品国产入口| 日本91视频| 老司机久久99久久精品播放| 亚洲AV无码一二区三区在线播放| 精品视频一区在线观看| 国产日韩欧美一区二区三区在线 | 午夜精品久久久久久久99热下载| 97色婷婷成人综合在线观看| 色网在线视频| 亚洲三级片在线看| 亚洲天堂.com| 波多野衣结在线精品二区| 色播五月婷婷| 亚洲欧美天堂网| 欧美乱妇高清无乱码免费| 91香蕉视频下载网站| 啪啪永久免费av| 国产精品视频系列专区| 日本尹人综合香蕉在线观看| 日本免费a视频| 蜜桃臀无码内射一区二区三区| 国产成人一二三| 9999在线视频| 久久久91人妻无码精品蜜桃HD| 国产一区二区网站| 亚洲专区一区二区在线观看| 欧美亚洲一区二区三区导航| 啪啪免费视频一区二区| 99ri精品视频在线观看播放| 五月婷婷亚洲综合| 天天干天天色综合网| 三级视频中文字幕| 91色综合综合热五月激情| 久热这里只有精品6| 国产精品亚洲专区一区| 夜夜爽免费视频| 亚洲国产天堂久久综合| 亚洲 成人国产| 国产aaaaa一级毛片| 国产成人精品高清不卡在线| 亚洲天堂网在线观看视频| 美美女高清毛片视频免费观看| 亚洲午夜天堂| 日韩欧美国产区| 亚洲精品男人天堂| 嫩草在线视频| 天天躁日日躁狠狠躁中文字幕| 在线亚洲精品福利网址导航| 91激情视频| 麻豆国产在线观看一区二区| 国产日产欧美精品| 欧美午夜网| 亚洲福利片无码最新在线播放| 成人久久18免费网站| 欧美午夜小视频| A级毛片无码久久精品免费| 免费人成网站在线观看欧美| 伊人激情综合| 老司机午夜精品视频你懂的| 国产素人在线| 欧美天堂久久| 亚洲系列无码专区偷窥无码| 亚洲人成成无码网WWW| 国产中文在线亚洲精品官网|