《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 基于SCTP的嵌入式远程视频自适应传输系统

基于SCTP的嵌入式远程视频自适应传输系统

2008-07-18
作者:高群凯,黄 仁

??? 摘 要: 一種基于嵌入式Linux和S3C2410平臺(tái)設(shè)計(jì)的遠(yuǎn)程視頻自適應(yīng)傳輸系統(tǒng)" title="傳輸系統(tǒng)">傳輸系統(tǒng),該系統(tǒng)對(duì)視頻的編碼壓縮和傳輸作了改進(jìn)設(shè)計(jì)。通過對(duì)改進(jìn)設(shè)計(jì)的模擬實(shí)驗(yàn),證明了改進(jìn)的設(shè)計(jì)能夠在網(wǎng)絡(luò)可用帶寬不穩(wěn)定的情況下保持視頻接收端緩存數(shù)據(jù)的持續(xù)高占有率,有效地減少了視頻播放的抖動(dòng)。
??? 關(guān)鍵詞: SCTP? 嵌入式Linux? 視頻采集? 自適應(yīng)? NS2

?

??? 同TCP一樣,流控制傳輸協(xié)議SCTP(Stream Control Transmission Protocol)[1]是一種可靠的、提供面向連接的、點(diǎn)到點(diǎn)數(shù)據(jù)傳輸協(xié)議,它繼承了TCP強(qiáng)大的擁塞控制、數(shù)據(jù)包丟失發(fā)現(xiàn)等功能。但是,SCTP具有的一些獨(dú)特的性質(zhì)[2],如多宿(Multi-homing)、多流(Multi-streaming)、部分有序(Partial Ordering)和塊(chunk)綁定等,因此比TCP更適合在WWW、MPEG4等業(yè)務(wù)中使用。在一般的視頻采集系統(tǒng)中,由于不能根據(jù)傳輸網(wǎng)絡(luò)的擁塞狀況實(shí)時(shí)地調(diào)整編碼壓縮參數(shù)和發(fā)送速率,導(dǎo)致接收端的視頻回放、緩沖數(shù)據(jù)停滯播放等,給用戶帶來不好的視覺感受。針對(duì)這個(gè)問題,本嵌入式遠(yuǎn)程視頻采集傳輸系統(tǒng)采用SCTP傳輸協(xié)議[3],并且采取一些改進(jìn)的設(shè)計(jì)策略,使得該系統(tǒng)可以根據(jù)網(wǎng)絡(luò)擁塞狀況自適應(yīng)地實(shí)現(xiàn)編碼壓縮和傳輸,減少丟失包,從而達(dá)到客戶端視頻播放流暢的滿意效果。
1 硬件平臺(tái)和軟件環(huán)境
??? 本嵌入式遠(yuǎn)程視頻采集傳輸系統(tǒng)硬件平臺(tái)選用北京恒豐銳科科技有限公司的HFRK2410開發(fā)板。該開發(fā)板是基于SAMSUNG S3C2410X高性能ARM處理器的嵌入式開發(fā)平臺(tái),穩(wěn)定工作頻率為202MHz, 帶有64MB SDRAM 64和64 NAND FLASH存儲(chǔ)器,一個(gè)USB主機(jī)接口,一個(gè)USB設(shè)備接口,CS8900以太網(wǎng)控制器以及其他設(shè)備和模塊。
??? SCTP是Linux 2.6 Kernel中新增加的一個(gè)傳輸層協(xié)議,因而必須使用2.6以后版本的Linux Kernel,同時(shí)在編譯Linux Kernel時(shí),要加入對(duì)SCTP模塊的支持。
??? Networking ---> Networking options ---> SCTP Configuration (EXPERIMENTAL) --->
??? The SCTP Protocol (EXPERIMENTAL)
??? [*] SCTP:Debug messages
??? [*] SCTP:Debug object counts
??? 該系統(tǒng)采用USB攝像頭獲取實(shí)時(shí)視頻,所以把USB 模塊和Video4Linux模塊的支持全部加入進(jìn)來。
????Device Drivers ---> Multimedia devices ---> <*> Video For Linux
??? Video For Linux ---> [*] V4L information in proc filesystem
??? Device Drivers ---> USB support ---> USB support ---> <*> USB OV511 Camera support
??? 有了以上基本設(shè)置,就可以在此編譯的內(nèi)核中進(jìn)行系統(tǒng)平臺(tái)的開發(fā)和運(yùn)行了。
2 系統(tǒng)自適應(yīng)設(shè)計(jì)和實(shí)現(xiàn)
??? 本系統(tǒng)在運(yùn)行中需要實(shí)時(shí)獲知網(wǎng)絡(luò)的阻塞情況才能自適應(yīng)地進(jìn)行編碼壓縮和傳輸,所以需要在應(yīng)用程序的視頻發(fā)送子模塊獲得關(guān)于當(dāng)前網(wǎng)絡(luò)的阻塞情況并把這些信息反饋給視頻編碼" title="視頻編碼">視頻編碼壓縮模塊,讓它們根據(jù)當(dāng)前網(wǎng)絡(luò)阻塞信息作相應(yīng)的調(diào)整,從而達(dá)到設(shè)計(jì)本系統(tǒng)的最終目的。因而在應(yīng)用層獲知當(dāng)前網(wǎng)絡(luò)阻塞情況是本系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的主要目標(biāo)。
??? 傳輸層的SCTP把當(dāng)前網(wǎng)絡(luò)阻塞情況隔離在應(yīng)用層之下,按照要求修改SCTP協(xié)議代碼并重編譯加載是不錯(cuò)的辦法,但是本系統(tǒng)采取了另一種方法,那就是通過跟蹤應(yīng)用層視頻發(fā)送子模塊時(shí)發(fā)送數(shù)據(jù)緩沖的變化情況來探測(cè)網(wǎng)絡(luò)阻塞狀況。
2.1 自適應(yīng)視頻發(fā)送實(shí)現(xiàn)
??? 視頻發(fā)送子模塊以一定的速率發(fā)送視頻數(shù)據(jù)" title="視頻數(shù)據(jù)">視頻數(shù)據(jù)。當(dāng)網(wǎng)絡(luò)阻塞加重時(shí),發(fā)送數(shù)據(jù)緩沖的待發(fā)送視頻數(shù)據(jù)占的比例會(huì)增大;相反,當(dāng)網(wǎng)絡(luò)阻塞減輕時(shí),發(fā)送數(shù)據(jù)緩沖的待發(fā)送視頻數(shù)據(jù)占的比例也會(huì)跟著減小。表1給出了緩沖區(qū)在tk時(shí)刻和tk+1時(shí)刻的變化狀況。

????????????????????????
??? 緩沖狀況的變化公式如下:
??? ?

??? 當(dāng)時(shí)刻tk和時(shí)刻tk+1間隔足夠小時(shí),式(1)可以寫成:
???


??? 變化式(2):
???
???

?????

(其中β為正常參數(shù),且0≤β≤1)
??? ?

則式(5)可簡(jiǎn)化并插入調(diào)整幅度參數(shù)A(A為正整數(shù)):
???

?分析式(7)知,當(dāng)α為正,即緩沖占用比率增大時(shí),表示由于網(wǎng)絡(luò)阻塞加重,則減小,輸入量將減少;當(dāng)α為負(fù),即緩沖占用比率減小時(shí),表示由于網(wǎng)絡(luò)阻塞減輕,則增大,輸入量將增大。視頻傳輸初始開始時(shí), 視頻發(fā)送子模塊以設(shè)定的初始速率發(fā)送視頻數(shù)據(jù)。其后視頻發(fā)送子模塊在固定的時(shí)間間隔內(nèi)根據(jù)上面的算法進(jìn)行網(wǎng)絡(luò)負(fù)載判斷,并計(jì)算相應(yīng)的發(fā)送速率調(diào)整系數(shù)。當(dāng)網(wǎng)絡(luò)擁塞時(shí),發(fā)送速率減小;當(dāng)網(wǎng)絡(luò)空閑時(shí),發(fā)送速率增加。
2.2 自適應(yīng)視頻編碼壓縮實(shí)現(xiàn)
??? Linux系統(tǒng)中的視頻子系統(tǒng)Video4Linux為視頻應(yīng)用程序提供了一套統(tǒng)一的API,視頻應(yīng)用程序通過標(biāo)準(zhǔn)的系統(tǒng)調(diào)用即可操縱各種不同的視頻捕獲設(shè)備。Video4Linux向虛擬文件系統(tǒng)注冊(cè)視頻設(shè)備文件,應(yīng)用程序通過操作視頻設(shè)備文件實(shí)現(xiàn)對(duì)視頻設(shè)備的訪問。在視頻采集模塊中獲取圖像數(shù)據(jù)" title="圖像數(shù)據(jù)">圖像數(shù)據(jù)后,將對(duì)原始的圖像數(shù)據(jù)進(jìn)行壓縮編碼,以方便在網(wǎng)絡(luò)中傳輸。XviD是一個(gè)開放源碼的MPEG-4多媒體編碼解碼器,它是基于OpenDivX而編寫的。XviD支持多種編碼模式,具有量化(Quantization)方式和范圍控制,運(yùn)動(dòng)偵測(cè)(Motion Search)和曲線平衡分配(Curve),動(dòng)態(tài)關(guān)鍵幀距(I-frame interval),心理視覺亮度修正,演職員表選項(xiàng),外部自定義控制,運(yùn)動(dòng)向量加速(Hinted Me)編碼,畫面優(yōu)化解碼等眾多編碼技術(shù),對(duì)用戶來說功能十分強(qiáng)大。在本系統(tǒng)視頻編碼壓縮模塊中,采用XviD編碼解碼器對(duì)原始圖像數(shù)據(jù)進(jìn)行MPEG-4視頻編碼。
??? 在評(píng)價(jià)遠(yuǎn)程視頻系統(tǒng)時(shí),人的主觀視覺感受往往是最關(guān)鍵的。當(dāng)觀看實(shí)時(shí)傳輸視頻圖像時(shí),最不可忍受的是視頻停滯緩沖或回放,它會(huì)使觀看效果非常糟糕。本系統(tǒng)中采用降低圖像畫面質(zhì)量的代價(jià)來換取圖像的流暢播放的設(shè)計(jì)。當(dāng)網(wǎng)絡(luò)阻塞嚴(yán)重時(shí),如果仍然用保持不變的圖像畫面質(zhì)量的編碼率對(duì)原始圖像數(shù)據(jù)進(jìn)行MPEG-4視頻編碼,勢(shì)必會(huì)導(dǎo)致相同播放時(shí)間的圖像數(shù)據(jù)不能及時(shí)正確地傳送到視頻接收子模塊,從而使客戶端播放斷斷續(xù)續(xù),給人以極差的主觀感受。本系統(tǒng)的視頻編碼壓縮模塊將根據(jù)從視頻發(fā)送子模塊傳來的當(dāng)前網(wǎng)絡(luò)的阻塞情況信息,實(shí)時(shí)調(diào)整編碼率。當(dāng)網(wǎng)絡(luò)阻塞減輕時(shí),適當(dāng)提高編碼率;當(dāng)網(wǎng)絡(luò)阻塞加重時(shí),則適當(dāng)降低編碼率。
??? 編碼率計(jì)算公式如下:
??? ?

?

其中:γ為正常參數(shù)且0≤γ≤1,B為調(diào)整幅度參數(shù)且為正整數(shù),α由式(6)定義。
??? 在視頻編碼壓縮模塊開始編碼時(shí),以初始編碼率E1進(jìn)行編碼,在以后的運(yùn)行過程中,跟隨網(wǎng)絡(luò)阻塞狀況進(jìn)行調(diào)整。當(dāng)網(wǎng)絡(luò)擁塞加重時(shí),降低編碼率Ek+1,以便在相同的網(wǎng)絡(luò)傳輸數(shù)據(jù)量包含更多的視頻圖像內(nèi)容;當(dāng)網(wǎng)絡(luò)轉(zhuǎn)為空閑時(shí),又將增加編碼率Ek+1,以提高圖像畫面質(zhì)量。另外考慮到在不同的應(yīng)用中,對(duì)視頻圖像編碼率有各自特別的要求,因而可以設(shè)定一個(gè)最高編碼率ψ和最低編碼率ω,則Ek+1依次由如下兩式計(jì)算后得到:
???

2.3 自適應(yīng)調(diào)整算法
??? 根據(jù)前述分析,在視頻傳輸初始階段,視頻編碼壓縮模塊以初始編碼率E1進(jìn)行編碼,視頻發(fā)送子模塊以設(shè)定的初始速率發(fā)送視頻數(shù)據(jù)。其后,視頻發(fā)送子模塊在固定的時(shí)間間隔內(nèi)(如5s),根據(jù)上面的算法進(jìn)行網(wǎng)絡(luò)負(fù)載判斷,并計(jì)算相應(yīng)的調(diào)整系數(shù)α,再根據(jù)α情況對(duì)視頻發(fā)送速率和視頻編碼率作相應(yīng)調(diào)整。具體算法描述如下:
??? (1)傳輸開始時(shí),視頻編碼壓縮模塊以初始編碼率E1進(jìn)行編碼,視頻發(fā)送子模塊以設(shè)定的初始速率發(fā)送視頻數(shù)據(jù),即E=E1,Sin=。
??? (2)計(jì)算調(diào)整系數(shù)α:
??? ?

??? (3)根據(jù)調(diào)整系數(shù)α對(duì)視頻發(fā)送速率和視頻編碼率作相應(yīng)調(diào)整。為了防止視頻發(fā)送速率和視頻編碼率的反復(fù)細(xì)微變化,只對(duì)大于等于一定程度的α做調(diào)整計(jì)算,否則不更新:
?????

??? (4)編碼率界限限制計(jì)算:
???

2.4 自適應(yīng)算法仿真及結(jié)果分析
??? 本系統(tǒng)在實(shí)際實(shí)施前需要對(duì)其中所涉及算法的正確性、參數(shù)的有效性進(jìn)行分析和合理選擇。選用開源免費(fèi)的網(wǎng)絡(luò)模擬仿真軟件NS2[4][5]進(jìn)行系統(tǒng)仿真分析。需要說明的是,在模擬實(shí)驗(yàn)中,只對(duì)算法進(jìn)行模擬實(shí)驗(yàn)而不是對(duì)整個(gè)系統(tǒng)進(jìn)行仿真,因此并沒有真正的采集圖片及編碼,而是采用包頭攜帶不同的信息來表示不同的編碼數(shù)據(jù)。
???? 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,節(jié)點(diǎn)0、1、2代表發(fā)送端,5、6、7代表接收端,3和4為路由器。3的隊(duì)列長(zhǎng)度為80,使用FIFO調(diào)度和尾部丟棄策略,設(shè)置4的隊(duì)列長(zhǎng)度無限大。節(jié)點(diǎn)0、1、2和3以及節(jié)點(diǎn)4和5、6、7之間的傳輸速率" title="傳輸速率">傳輸速率都為1.2Mb/s,延遲為100ms;節(jié)點(diǎn)3和節(jié)點(diǎn)4之間的傳輸速率為2.5Mb/s,延遲為200ms。系統(tǒng)模擬開始時(shí),在0s時(shí)由節(jié)點(diǎn)0產(chǎn)生發(fā)往節(jié)點(diǎn)5的1Mb/s的MPEG-SCTP數(shù)據(jù)[5],隨后在3s時(shí)由節(jié)點(diǎn)1和節(jié)點(diǎn)2產(chǎn)生發(fā)往節(jié)點(diǎn)6和節(jié)點(diǎn)7的0.8Mb/s的FTP-TCP數(shù)據(jù)[6]和CBR-UDP數(shù)據(jù)。而分別在28s、20s和20s時(shí),節(jié)點(diǎn)0、1和2停止發(fā)送數(shù)據(jù),結(jié)束模擬。

??????????????????
??? 在第一次實(shí)驗(yàn)中,選擇采用恒定傳輸速率=1.0Mb/s和編碼率E1=420kb/s,每隔0.1s記錄一次節(jié)點(diǎn)5的接收數(shù)據(jù)緩沖占有百分比。圖2為接收節(jié)點(diǎn)緩沖數(shù)據(jù)占有率隨時(shí)間變化分布圖。
?????????????????????????

??? 在第二次實(shí)驗(yàn)中,采用自適應(yīng)傳輸速率和編碼率,相關(guān)初始參數(shù)取值如下:
???   


??? 每隔0.1s就對(duì)網(wǎng)絡(luò)負(fù)載判斷并根據(jù)情況進(jìn)行自適應(yīng)調(diào)整。在實(shí)驗(yàn)中每隔0.1s就記錄一次節(jié)點(diǎn)0端編碼率(由于視頻發(fā)送速率和編碼率按同一形式公式變化,所以記錄一個(gè)就可以了)和節(jié)點(diǎn)5的接收數(shù)據(jù)緩沖占有百分比,如圖3所示。

????????????????????????
??? 從圖3中可以看到,在3s之前,由于網(wǎng)絡(luò)存在足夠可用帶寬,負(fù)載小,編碼率持續(xù)增大,直到設(shè)定的最高編碼率450kb/s并保持了一段時(shí)間。在3s~20s的時(shí)間段,由于網(wǎng)絡(luò)傳輸延時(shí)和另外兩個(gè)節(jié)點(diǎn)開始發(fā)送數(shù)據(jù),導(dǎo)致網(wǎng)絡(luò)負(fù)載加大,MPEG-SCTP數(shù)據(jù)流與另外兩條數(shù)據(jù)流進(jìn)行帶寬爭(zhēng)用,MPEG的編碼率上下波動(dòng)并且整體趨勢(shì)為逐步下降,直到達(dá)到設(shè)定的最低編碼率350kb/s。在20s后,另外兩條數(shù)據(jù)流關(guān)閉,網(wǎng)絡(luò)負(fù)載減小,MPEG的編碼率又持續(xù)上升,直到450kb/s,并保持。
?? ?另外,對(duì)比兩次實(shí)驗(yàn)中的接收節(jié)點(diǎn)5的緩沖數(shù)據(jù)占有率隨時(shí)間變化分布圖(圖4)可以看到,恒定傳輸速率和編碼率的實(shí)驗(yàn)中,節(jié)點(diǎn)5的緩沖數(shù)據(jù)占有率變化完全按照MPEG-SCTP數(shù)據(jù)流與另外兩條數(shù)據(jù)流進(jìn)行帶寬爭(zhēng)用的結(jié)果變化,這種情況很容易導(dǎo)致視頻播放的不流暢。而在自適應(yīng)傳輸速率和編碼率的實(shí)驗(yàn)中,接收節(jié)點(diǎn)緩沖數(shù)據(jù)占有率除了與MPEG-SCTP數(shù)據(jù)流與另外兩條數(shù)據(jù)流進(jìn)行帶寬爭(zhēng)用的結(jié)果有關(guān),還與節(jié)點(diǎn)0的編碼率有關(guān),其結(jié)果是雖然網(wǎng)絡(luò)負(fù)載加大,分給MPEG-SCTP數(shù)據(jù)流的可用帶寬減少,但是接收節(jié)點(diǎn)5的緩沖數(shù)據(jù)占有率反而有上升的趨勢(shì)。這種情況會(huì)導(dǎo)致視頻質(zhì)量下降,但是不會(huì)出現(xiàn)播放的緩沖、停滯,相對(duì)而言,更能保證實(shí)時(shí)播放的可視效果。
??????????????????????????????

3 系統(tǒng)實(shí)現(xiàn)
??? 把按照本文第1節(jié)所述設(shè)置編譯的新 Linux 2.6內(nèi)核燒錄到HFRK2410開發(fā)板中,安裝好網(wǎng)眼3000數(shù)碼攝像頭,并確定其正常驅(qū)動(dòng)后,就可以開始利用Linux系統(tǒng)中的視頻子系統(tǒng)Video4Linux為視頻程序應(yīng)用提供一套統(tǒng)一的API,實(shí)現(xiàn)視頻采集模塊。獲取圖像數(shù)據(jù)后,在視頻編碼模塊使用XviD庫對(duì)原始圖像數(shù)據(jù)進(jìn)行壓縮編碼。另外從 http://sourceforge.net/上的開源工程中下載SCTP的最新開源代碼KLSCTP,編譯加載模塊后就可以利用其提供的SCTP API接口實(shí)現(xiàn)系統(tǒng)的發(fā)送視頻模塊和視頻接收模塊。
??? 系統(tǒng)硬件平臺(tái)框架圖和模塊劃分見圖5和圖6。

??????????????????????????????
??? 基于SCTP的視頻采集傳輸系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn),基本利用的是免費(fèi)和開源的資源,具有穩(wěn)定可靠、開發(fā)容易、修改定制方便、成本低廉等特點(diǎn),可擴(kuò)展應(yīng)用在遠(yuǎn)程監(jiān)控系統(tǒng)、可視電話、工業(yè)控制等領(lǐng)域。同時(shí),相對(duì)于傳統(tǒng)的類似系統(tǒng),本系統(tǒng)采用改良了的采集、編碼、傳輸設(shè)計(jì)策略,能較好地適應(yīng)帶寬多變的網(wǎng)絡(luò),提高實(shí)時(shí)視頻的視覺感受質(zhì)量。但是另一方面,由于其采用的技術(shù)都是基于Linux或是開源代碼,因而系統(tǒng)具體實(shí)現(xiàn)比較復(fù)雜,其中改進(jìn)的算法也會(huì)產(chǎn)生相應(yīng)的計(jì)算開銷。但是隨著Linux技術(shù)的普及和計(jì)算機(jī)運(yùn)算速度的加快,這個(gè)問題將會(huì)解決。
參考文獻(xiàn)
[1] STEWART R,XIE Q.RFC 2960:Stream control transmission protocol[S],2000.
[2] TIMOTHY A,GRIFFIN G,VIEIRA D.A comparison between?two maintenance session protocols.Proceedings of the advanced industrial conference on telecommunications/Service assurance with partial and intermittent resources conference/ELearning on telecommunications workshop,2006.
[3] AHMED ABD EL AL,TAREK SAADAWI,MYUNG LEE.Supporting real-time video in sctp networks.10.1109/MIL-
COM,2006,302104.
[4] The Network Simulator-ns-2[EB/OL].http://www.isi.edu/nsnam/ns/.

[5] ADAMI D,CALLEGARI C,CECCARELLI D et al.Design,development and validation of an ns2 module for dynamic?lsp rerouting.10.1109/CAMAD,2006.
[6] GOEL A,KRASIC C,LI K et al.Supporting low latency?tcp-based media streams.In Proceedings of International?Workshop on Quality of Service(IWQoS 2002),F(xiàn)lorida,2002,5.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容