摘 要: 基于校園無(wú)線網(wǎng)絡(luò)環(huán)境,,研究了流媒體視頻碼率自適應(yīng)技術(shù)。利用分布式實(shí)時(shí)轉(zhuǎn)碼系統(tǒng)保證直播流視頻轉(zhuǎn)碼的實(shí)時(shí)性,,并根據(jù)校園無(wú)線網(wǎng)用戶的特殊性,,研究了首次接入視頻碼率選擇策略,以減少碼率切換次數(shù),。實(shí)驗(yàn)證明,,這種方案在無(wú)線網(wǎng)絡(luò)環(huán)境發(fā)生變化時(shí),保證了視頻播放的流暢性,,為用戶提供了友好的體驗(yàn),。
關(guān)鍵詞: 流媒體;碼率自適應(yīng),;無(wú)線網(wǎng)絡(luò),;RTP;轉(zhuǎn)碼
隨著GPRS和WiFi無(wú)線網(wǎng)絡(luò)的迅速發(fā)展,,智能終端在線點(diǎn)播直播視頻業(yè)務(wù)越來(lái)越多,。面對(duì)復(fù)雜的用戶和移動(dòng)環(huán)境,對(duì)于視頻點(diǎn)播而言,,需要一定的服務(wù)質(zhì)量保證策略,,以保證不穩(wěn)定無(wú)線網(wǎng)絡(luò)環(huán)境下用戶的友好體驗(yàn)。
本文通過(guò)終端網(wǎng)絡(luò)狀況反饋,、分布式實(shí)時(shí)轉(zhuǎn)碼技術(shù)和動(dòng)態(tài)碼率自適應(yīng)技術(shù),,解決終端所處無(wú)線網(wǎng)絡(luò)環(huán)境發(fā)生變化時(shí),終端視頻收看體驗(yàn)下降的問(wèn)題,。當(dāng)無(wú)線網(wǎng)絡(luò)狀況發(fā)生變化時(shí),,終端將網(wǎng)絡(luò)狀況參數(shù)反饋給流媒體服務(wù)器,服務(wù)器根據(jù)反饋進(jìn)行處理,,動(dòng)態(tài)調(diào)整流視頻碼率,。
1 終端網(wǎng)絡(luò)狀況反饋方案
實(shí)時(shí)傳輸協(xié)議RTP(Real-time Transport Protocol)[1]用于傳輸數(shù)字音頻和數(shù)字視頻等多媒體數(shù)據(jù),本身并不提供任何保證數(shù)據(jù)傳輸?shù)目煽?、有序和?shí)時(shí),,也不提供其他途徑保證服務(wù)質(zhì)量,這些工作都依賴于RTCP(Real-time Transport Control Protocol)協(xié)議來(lái)完成。
RTCP[2]協(xié)議為RTP提供關(guān)于媒體傳輸以及媒體源的信息,,如數(shù)據(jù)傳輸延遲,、丟包率、抖動(dòng)等相關(guān)信息,,以用于RTP協(xié)議的交互控制,。RTCP控制包分為SR、RR,、SDFS,、BYE等。
RR包中包含了接收的包數(shù),、上個(gè)報(bào)文間隔期間接收的包數(shù),、丟失包的總數(shù)、包丟失率,、平均延遲,、延遲抖動(dòng)等消息,;SR包中包含了包發(fā)出時(shí)的時(shí)間標(biāo)簽,、發(fā)送的總包數(shù)、發(fā)送的總字節(jié)數(shù)等信息,。這些信息構(gòu)成了制定控制策略的依據(jù),。
所以,終端使用RTCP協(xié)議反饋RTP數(shù)據(jù)包的丟失率,、傳輸抖動(dòng)等消息,,服務(wù)器根據(jù)收到的RTCP RR包,進(jìn)行分析處理后動(dòng)態(tài)地切換視頻碼率,。
2 終端流視頻碼率自適應(yīng)方案
流媒體視頻碼率自適應(yīng)[3]調(diào)整是一種反饋控制技術(shù),。它在服務(wù)器端和接收端之間建立一條反饋通道,通過(guò)實(shí)時(shí)監(jiān)測(cè)終端網(wǎng)絡(luò)帶寬和丟包率來(lái)實(shí)時(shí)監(jiān)測(cè)終端網(wǎng)絡(luò)狀況,,根據(jù)當(dāng)前可用網(wǎng)絡(luò)帶寬和丟包率大小來(lái)估計(jì)終端網(wǎng)絡(luò)的實(shí)際狀況,,并據(jù)此動(dòng)態(tài)調(diào)整服務(wù)器端發(fā)送視頻碼率的大小。
2.1 首次接入碼率選擇方案
流視頻文件切換的代價(jià)是巨大的,,不僅消耗網(wǎng)絡(luò)資源,,而且占用移動(dòng)終端的處理能力,所以選擇一個(gè)合適的首次接入碼率傳輸非常重要,。根據(jù)首次接入終端的網(wǎng)絡(luò)類型,、當(dāng)前無(wú)線網(wǎng)絡(luò)帶寬、當(dāng)前接入用戶數(shù)量,、終端的處理能力等,,選擇合適的碼率視頻文件,減少傳輸過(guò)程中碼率切換的次數(shù)。
考慮到高校學(xué)生接入無(wú)線網(wǎng)具有階段集中的特性,,根據(jù)校園無(wú)線網(wǎng)絡(luò)接入終端的數(shù)量或無(wú)線網(wǎng)流量的大小,,設(shè)置合適的首次接入碼率,然后結(jié)合剛接入無(wú)線網(wǎng)絡(luò)狀況預(yù)測(cè)進(jìn)行上下微調(diào)整,,從而減少碼率切換次數(shù),,保證終端視頻播放的流暢度。
2.2 流媒體服務(wù)器碼率切換方案
流媒體服務(wù)器可以根據(jù)自適應(yīng)碼率控制算法[4]選擇不同的流視頻傳輸碼率[5],。例如,,在實(shí)現(xiàn)中對(duì)包丟失率定義若干閾值,a:4%,,b:8%,,c:10%,d:12%,;當(dāng)包丟失率處于(a,,b](某個(gè)數(shù)值范圍)時(shí),切換選擇文件庫(kù)中相應(yīng)碼率的流視頻,。這樣需要同一視頻文件,,有不同碼率等級(jí)的版本,對(duì)于電視直播流,,也有不同碼率等級(jí)的文件,。
本方案通過(guò)分布式實(shí)時(shí)轉(zhuǎn)碼系統(tǒng),保證了點(diǎn)播和直播流視頻文件的實(shí)時(shí)提供,,實(shí)現(xiàn)了從50 kb/s~300 kb/s的6個(gè)遞增的碼率等級(jí),。
2.2.1 分布式實(shí)時(shí)轉(zhuǎn)碼系統(tǒng)
針對(duì)滿足各終端環(huán)境對(duì)視頻轉(zhuǎn)碼工作的高要求,提出了基于Hadoop的使用實(shí)時(shí)調(diào)度策略的分布式轉(zhuǎn)碼方案,,使用mapreduce編程框架和mencoder進(jìn)行分布式轉(zhuǎn)碼,,達(dá)到嚴(yán)格控制轉(zhuǎn)碼完成時(shí)間的目的。
(1)文件切割接口:cut fileName fileTime playTime
Cut是流視頻文件切割腳本,,fileName表示要處理的流視頻文件,,fileTime表示要處理的流視頻文件的總播放時(shí)間,playTime表示要切割成的每段流視頻的播放時(shí)間,。
(2)文件轉(zhuǎn)碼接口:transcode fileName 參數(shù)1,,參數(shù)2,…,,參數(shù)n
Transcode表示本地轉(zhuǎn)碼腳本,,fileName表示要轉(zhuǎn)碼的文件名,參數(shù)表示對(duì)流視頻文件碼率等轉(zhuǎn)碼參數(shù)的設(shè)置,。
當(dāng)流視頻文件切割處理結(jié)束后,,系統(tǒng)主節(jié)點(diǎn)就會(huì)將各流視頻段分發(fā)到各子節(jié)點(diǎn),,各子節(jié)點(diǎn)根據(jù)設(shè)定的參數(shù)調(diào)用轉(zhuǎn)碼腳本進(jìn)行轉(zhuǎn)碼,最后存儲(chǔ)到流媒體服務(wù)器,。
2.2.2 轉(zhuǎn)碼方案
源視頻分為點(diǎn)播流視頻和電視直播流視頻,。
(1)點(diǎn)播流視頻轉(zhuǎn)碼:在離線狀態(tài)下,通過(guò)轉(zhuǎn)碼系統(tǒng)預(yù)先壓縮一系列碼率(50 kb/s~300 kb/s)不等的流視頻文件存儲(chǔ)在服務(wù)器端,。
(2)電視直播流視頻轉(zhuǎn)碼:因?yàn)殡娨曋辈チ饕曨l需要實(shí)時(shí)傳輸,,這就需要轉(zhuǎn)碼系統(tǒng)進(jìn)行實(shí)時(shí)轉(zhuǎn)碼。系統(tǒng)實(shí)時(shí)地從視頻源獲得一定播放長(zhǎng)度的直播流視頻段,,調(diào)用轉(zhuǎn)碼服務(wù)器系統(tǒng)轉(zhuǎn)成一系列碼率不等的流視頻文件,,暫時(shí)存放在流媒體服務(wù)器。服務(wù)器根據(jù)碼率切換方案進(jìn)行調(diào)整,。
2.2.3 碼率調(diào)節(jié)策略
當(dāng)估計(jì)到終端網(wǎng)絡(luò)丟包率突然上升,、網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),降低服務(wù)器端發(fā)送視頻文件的碼率,,保證用戶收看視頻的流暢度,。在實(shí)現(xiàn)中,當(dāng)丟包率突然上升時(shí),,將發(fā)送的視頻文件降低2個(gè)碼率級(jí)別,,因?yàn)閬G包率突然上升表明網(wǎng)絡(luò)環(huán)境惡化,很大程度上影響終端的正常播放,。
當(dāng)丟包率下降時(shí),,延遲調(diào)整碼率,,待丟包率趨于平穩(wěn)后,,再調(diào)高碼率級(jí)別,以消去短時(shí)間內(nèi)丟包波動(dòng)的情況,。
3 終端視頻碼率自適應(yīng)系統(tǒng)實(shí)現(xiàn)
根據(jù)實(shí)現(xiàn)的功能不同,,整個(gè)系統(tǒng)可以劃分為分布式實(shí)時(shí)轉(zhuǎn)碼服務(wù)器、流媒體服務(wù)器和移動(dòng)終端三個(gè)部分,,如圖1所示,。
3.1 分布式實(shí)時(shí)調(diào)度轉(zhuǎn)碼服務(wù)器
分布式實(shí)時(shí)調(diào)度轉(zhuǎn)碼系統(tǒng)主要將點(diǎn)播文件和電視直播源信號(hào)轉(zhuǎn)換成列碼一系列碼率不等的流視頻文件存儲(chǔ)在流媒體服務(wù)器。
3.2 流媒體服務(wù)器
流媒體服務(wù)器主要由以下4個(gè)模塊組成:
(1)首次接入碼率選擇模塊:根據(jù)首次接入終端的網(wǎng)絡(luò)類型,、當(dāng)前無(wú)線網(wǎng)絡(luò)帶寬,、當(dāng)前接入用戶數(shù)量、終端的處理能力等,,選擇合適的碼率流視頻文件,,生成相應(yīng)的RTSP點(diǎn)播或者直播URL路徑,提供給終端,。
(2)終端網(wǎng)絡(luò)狀況反饋處理模塊:主要是根據(jù)終端反饋回來(lái)的RTCP RR數(shù)據(jù)包,,獲取丟包率,、網(wǎng)絡(luò)帶寬等信息來(lái)估計(jì)當(dāng)前的網(wǎng)絡(luò)狀況,作為碼率切換模塊調(diào)整的依據(jù),。
(3)碼率切換模塊:通過(guò)預(yù)測(cè)得到的下一時(shí)刻丟包率,、網(wǎng)絡(luò)帶寬等超過(guò)了切換門限值,就結(jié)束當(dāng)前碼率的視頻傳輸,,切換到文件庫(kù)中合適碼率的視頻文件,。
(4)RTSP傳輸模塊:該模塊主要將封裝好的RTP數(shù)據(jù)包發(fā)送給客戶端。
3.3 移動(dòng)終端
移動(dòng)終端主要由RTSP接收模塊,、RTCP網(wǎng)絡(luò)狀況反饋模塊和視頻顯示模塊三部分組成,。
(1)RTSP接收模塊:該模塊通過(guò)RTSP協(xié)議接收服務(wù)器端發(fā)送的RTP數(shù)據(jù)包,送給終端解碼器進(jìn)行解碼,。
(2)RTCP網(wǎng)絡(luò)狀況反饋模塊:移動(dòng)終端通過(guò)RTCP RR包將丟失包的總數(shù),、包丟失率、平均延遲,、延遲抖動(dòng)等消息發(fā)送給流媒體服務(wù)器,,用來(lái)描述當(dāng)前終端的網(wǎng)絡(luò)狀況。
(3)視頻顯示[6]模塊:移動(dòng)終端通過(guò)解碼器解碼,,播放視頻,。
4 實(shí)驗(yàn)測(cè)試分析
4.1 實(shí)驗(yàn)環(huán)境
分布式實(shí)時(shí)轉(zhuǎn)碼系統(tǒng)環(huán)境:分割服務(wù)器、Hadoop集群,;流媒體服務(wù)器環(huán)境:ubuntu系統(tǒng),,dss達(dá)爾文開(kāi)源流媒體服務(wù)器軟件;測(cè)試終端:1臺(tái)小米1s手機(jī),、1臺(tái)聯(lián)想筆記本電腦,;電視直播源:機(jī)頂盒設(shè)備。
整個(gè)測(cè)試過(guò)程,,系統(tǒng)運(yùn)轉(zhuǎn)良好,,分布式實(shí)時(shí)轉(zhuǎn)碼系統(tǒng)很好地保證了直播流視頻數(shù)據(jù)的實(shí)時(shí)提供,流媒體服務(wù)器監(jiān)聽(tīng)用戶終端請(qǐng)求,,及時(shí)響應(yīng)和提供視頻傳輸,,并實(shí)時(shí)監(jiān)測(cè)用戶終端網(wǎng)絡(luò)狀況反饋,動(dòng)態(tài)調(diào)整視頻碼率,,保證了用戶友好的收看體驗(yàn),。
在無(wú)線網(wǎng)絡(luò)不穩(wěn)定、易受到干擾的情況下,,研究了碼率自適應(yīng)技術(shù)以提高用戶的收看體驗(yàn),。通過(guò)首次接入碼率選擇方案,減少了觀看過(guò)程中碼率切換的次數(shù),,有效地節(jié)省了資源,。分布式實(shí)時(shí)轉(zhuǎn)碼系統(tǒng)解決了轉(zhuǎn)碼的需求,,并保證了電視直播視頻轉(zhuǎn)碼的實(shí)時(shí)性。在視頻碼率切換模塊中,,服務(wù)器使用閾值比較方案選擇下一時(shí)刻傳輸?shù)囊曨l碼率,。這種方案考慮因素比較單一,精度不準(zhǔn)確,,下一步工作會(huì)改進(jìn)選擇方案,,增加計(jì)算網(wǎng)絡(luò)狀況的因子,以使碼率切換方案更加準(zhǔn)確,,使終端觀看體驗(yàn)更加友好,。
參考文獻(xiàn)
[1] 孫松源,吳建國(guó).基于RTP和Android的視頻傳輸?shù)难芯繉?shí)現(xiàn)方法[J].電腦知識(shí)與技術(shù),,2012,,8(4):903-905,914.
[2] 李校林,,劉海波.RTP/RTCP,、RTSP在無(wú)線視頻監(jiān)控系統(tǒng)中設(shè)計(jì)與實(shí)現(xiàn)[C].2011年第十三屆全國(guó)消費(fèi)電子技術(shù)年會(huì),2011.
[3] 楊琛,,白波.實(shí)時(shí)視頻流自適應(yīng)碼流控制研究[J].計(jì)算機(jī)技術(shù)與應(yīng)用進(jìn)展,,2008(7):445-447.
[4] 左東紅.面向TCP的流媒體傳輸編碼碼率自適應(yīng)算法[J].中國(guó)圖象圖形學(xué)報(bào),2011,,16(4):510-515.
[5] 王瑞,,劉寶成.一種適用于H.264/AVC的自適應(yīng)碼率控制算法[J].電子技術(shù)研發(fā),2011,,38(6):15-18.
[6] VUN N,,OOI Y H.Implementation of an Android phone based video streamer[C].2010 IEEE/ACM International Conference on Green Computing and Communications,2010.