滕杰英 黃仲 吳霄漢
摘要:隨著當(dāng)前互聯(lián)網(wǎng)普及以及通訊技術(shù)不斷發(fā)展,其中以多媒體為主要的載體的流媒體,在生活中得到越來越多的廣泛以及使用。傳統(tǒng)的Internet可以比較有效完成文字、圖像等各種的離散性的媒體方面的輸送。但缺陷也明顯,在傳輸流媒體以及音頻數(shù)據(jù)時(shí)候,遇到巨大挑戰(zhàn)。主要以流媒體方式對(duì)于數(shù)據(jù)進(jìn)行傳輸。為了更好的應(yīng)付這個(gè)挑戰(zhàn),隨著流媒體不斷的持續(xù)性增長,傳統(tǒng)的流媒體在此中呈現(xiàn)了不足。常見如無法通過防火墻、網(wǎng)絡(luò)異構(gòu)、服務(wù)器復(fù)雜等。但是基于MPEG-DADH協(xié)議的流媒體技術(shù)互相結(jié)合HTTP漸進(jìn)式下載技術(shù)和自適應(yīng)傳輸技術(shù)等優(yōu)點(diǎn)可以在一定程度上優(yōu)化這些問題。本文則是研究基礎(chǔ)為DASH協(xié)議的流媒體的自適應(yīng)系統(tǒng)以及關(guān)鍵技術(shù)。
關(guān)鍵詞:自適應(yīng)傳輸;HTTP;流媒體
一、流媒體技術(shù)概述
流媒體傳輸?shù)幕驹砣鐖D1-1所示,從圖1-1可以看出。流式傳輸?shù)囊话氵^程如下:首先開始階段,系統(tǒng)用戶請(qǐng)求流媒體數(shù)據(jù)以后,便開始工作,在WEB的服務(wù)器和Web瀏覽器之間的傳輸則是靠HTTP/TCP會(huì)話消息,主要目的以便讓服務(wù)器從海量的信息中進(jìn)行檢索用戶請(qǐng)求的數(shù)據(jù);其次Web瀏覽器啟動(dòng)音頻視頻播放器,在通過和Web服務(wù)器相互的交互進(jìn)而在此基礎(chǔ)上得到參數(shù),因此在此過程中需要對(duì)于此播放器進(jìn)行初始化操作。然后在音頻播放器與音頻視頻服務(wù)則是通過RTSP/TCP,交換數(shù)據(jù)的傳輸用戶的控制信息,最后則是在通過RTP/UDP協(xié)議,這樣可以使得音頻數(shù)據(jù)從音頻視頻服務(wù)器中傳輸?shù)玫娇蛻舳瞬シ牌鬟M(jìn)行播放。
為了實(shí)現(xiàn)數(shù)據(jù)傳輸,本文則是基于C/S的流媒體方式中,其中對(duì)于服務(wù)器和具體的客戶端主要是通過流媒體的傳輸協(xié)議進(jìn)行實(shí)現(xiàn)。TCP協(xié)助中規(guī)定了“確認(rèn)應(yīng)答”機(jī)制和“超時(shí)傳輸”機(jī)制,這就意味者當(dāng)發(fā)送發(fā)一旦發(fā)送消息以后,將實(shí)際的等待接收的消息為確認(rèn)信息,但是假如一直沒有收到接收方的信息的時(shí)候,他會(huì)一直處于等待狀態(tài),一直到等待超時(shí)。當(dāng)?shù)却臅r(shí)候超過系統(tǒng)自身所設(shè)定的時(shí)間的時(shí)候,系統(tǒng)將會(huì)重新發(fā)送丟失的分組,另外需要注意的是在TCP的協(xié)議數(shù)據(jù)包傳輸很多字節(jié)開銷的時(shí)候,因此實(shí)際上傳輸實(shí)施數(shù)據(jù)方面則是表現(xiàn)的不足之處。UDP協(xié)議中傳輸?shù)木唧w的原則:“盡最大努力進(jìn)行傳輸”并不對(duì)于已經(jīng)發(fā)出的分組做任何的校驗(yàn)。根據(jù)這一特點(diǎn)可以在一定程度上彌補(bǔ)TCP協(xié)議在實(shí)時(shí)傳輸方面的具有不足。
隨著流媒體實(shí)際的應(yīng)用范圍越來的越廣泛,可以說現(xiàn)在的媒體數(shù)據(jù)相比較傳統(tǒng)的媒體數(shù)據(jù)而言要大很多。但是受到通信網(wǎng)絡(luò)錯(cuò)綜復(fù)雜的限制,就目前的流媒體在系統(tǒng)的性能方面可以說受到了極大的挑戰(zhàn)。因此這些方方面面都是需要進(jìn)一步的提高。
二、基于DASH的流媒體自適用傳輸系統(tǒng)研究
本文在進(jìn)行搭建DASH協(xié)議的流媒體主要是基于Ubuntul4.0上,其中對(duì)于具體的服務(wù)端則是采用普通的Apache服務(wù)器,另外就是客戶端需要使用的DASH插件的VLC播放器。其中需要注意的是在具體的內(nèi)容的準(zhǔn)備的階段則由視頻方面的轉(zhuǎn)碼和具體的視頻切換兩個(gè)步驟。在具體的操作中,使用音頻轉(zhuǎn)碼工具FFmpeg進(jìn)行視頻文件的轉(zhuǎn)碼和GPAC和MP4Box工具進(jìn)行視頻的文件切片。在具體的客戶端,則是包含了MPD文件的解析、切片下載和自適應(yīng)選擇等三個(gè)步驟。
2.1系統(tǒng)總體構(gòu)建
對(duì)于系統(tǒng)的總體的構(gòu)建,主要是分為兩部分,分別為片源端、服務(wù)器和客戶端三個(gè)部分,其中對(duì)于片源端而言,主要是具有一定封裝格式的視頻節(jié)目上傳至服務(wù)器,另外需要注意的是片源端到實(shí)際服務(wù)器的整體過程可以說比較的簡單,本文主要研究的重點(diǎn)為用戶的上傳視頻開始。
在Apache服務(wù)器端,一方面則是負(fù)責(zé)接收和具體的響應(yīng)開放端收到的HTTP的請(qǐng)求。另外一方面則是對(duì)于視頻文件進(jìn)行流媒體相關(guān)的內(nèi)容的準(zhǔn)備性的工作。尤其是在自適應(yīng)的客戶端,一方面對(duì)于用戶請(qǐng)求的下載和播放視頻的切片。另外一方面則是通過自適應(yīng)模塊選擇出和網(wǎng)絡(luò)寬帶匹配下的一片最佳碼率。具體的系統(tǒng)總體構(gòu)架圖如圖2-1所示。
2.2服務(wù)端內(nèi)容準(zhǔn)備
2.2.1FFmpeg視頻轉(zhuǎn)碼
對(duì)于具體的用戶上傳的單一碼率文件而言,假如在此基礎(chǔ)上要實(shí)現(xiàn)自適用的傳輸,這就需要我們準(zhǔn)備多個(gè)碼率視頻版本,并將各個(gè)碼率切片。首先本文將上傳單一的碼率視頻文件轉(zhuǎn)換成400kbps、800kbps和1.5Mbps三個(gè)碼率等級(jí)。下面則是本文將利用相關(guān)的軟件FFmpeg工具進(jìn)行實(shí)現(xiàn)視頻文件的相關(guān)轉(zhuǎn)碼。
首先需要準(zhǔn)備的則是FFmpeg工具的環(huán)境,進(jìn)行安裝,但是在具體安裝的時(shí)候需要依賴以下工具包:yasm(libx264 需要 yasm,所以先安裝 yasm);libx264;libfaac;libmp3lame;libtheora;libvorbis;libxvid;libxext;libxfixes。從FFmpeg相關(guān)的官網(wǎng)下載最新的FFmpeg源代碼的包,之后在進(jìn)行解壓,解壓以后在進(jìn)行編譯,具體的編譯的命令如下:
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3
--enable-nonfree
--enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame
--enable-libtheora
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis
make
make install
至此,F(xiàn)Fmpeg 安裝完成,查看 FFmpeg 安裝是否成功可用命令 ffmpeg –version。
在進(jìn)行對(duì)于多個(gè)碼率視頻文件進(jìn)行相關(guān)的轉(zhuǎn)碼的時(shí)候,一個(gè)比較重要的要求則是對(duì)于I幀的位置,假如I幀不在不同質(zhì)量之間進(jìn)行對(duì)準(zhǔn),則對(duì)于具體端的長度不互相的匹配。使用的過程中,難以做到質(zhì)量之間的切換。為了確保用戶之間的不同質(zhì)量切換,需要在具體的轉(zhuǎn)碼過程中,必須強(qiáng)行的從I幀的位置進(jìn)行編碼。
2.2.2MP4Box視頻切片
在進(jìn)行MP4Box主要是由GPAC發(fā)布的多媒體封裝性的程序。從具體的GPAC官網(wǎng)可以獲得已經(jīng)發(fā)布性的版本,在具體的安裝以后,在此基礎(chǔ)上就可以獲取DASH切片,但是在此過程中,需要注意的是,當(dāng)在進(jìn)行MP4編碼文件的時(shí)候,需要輸入正確的參數(shù),這樣可以獲取每一段I幀。在此基礎(chǔ)上本文使用的是MP4Box版本,具體的0.6.2,具體的命名的切片如下:
MP4Box -dash 2000 -rap -frag-rap -profile onDemand -out [path/to/outpout.file]vid1.mp4
vid2.mp4 aud1.mp4 aud2.mp4
-dash [DURATION]:啟用 DASH 功能,創(chuàng)建設(shè)置的持續(xù)時(shí)間的段。
-rap -frag-rap:強(qiáng)制段以隨機(jī)接入點(diǎn)開始(I 幀開始)。 -profile [PROFILE]:MPEG-DASH 配置文件。
-out [path / to / outpout.file]:輸出文件位置。 此參數(shù)是可選的,默認(rèn)情況下,MP4box 將在當(dāng)前目錄中創(chuàng)建一個(gè) output.mpd 文件和相應(yīng)的 output.mp4 文件。-in [path / to / input1.file]:指示輸入 mp4 文件的位置,可以是視頻或音頻文件。
2.3 VLC概述
VLC (Video Lan Client)主要是一款比較開源的軟件,可以做簡單的流媒體的播放使用,該軟件的實(shí)際應(yīng)用可以說非常廣泛,具有比較好的跨平臺(tái)以及多平臺(tái)的支持,并在此基礎(chǔ)上支持多種的編碼各種,VLC的優(yōu)勢(shì)在于其插件化的設(shè)計(jì),根據(jù)相關(guān)的加載方式,其中具體的插件可以內(nèi)置插件和動(dòng)態(tài)載入插件,并在實(shí)際運(yùn)行的過程中,插件會(huì)隨著具體的使用完畢,從而進(jìn)行動(dòng)態(tài)的釋放。這個(gè)時(shí)候的新插件會(huì)繼續(xù)的加載進(jìn)來,libvlc.dll 是 VLC 的一個(gè)重要內(nèi)置插件,主要?供音視頻輸出、流接入、模塊管理等的接口它是 VLC 的核心。表 2.2 示出了 VLC-DASH 插件中主要的類,這些類分布在插件的 5 個(gè)模塊中。
三、結(jié)束語
本文首先則是對(duì)于流媒體進(jìn)行了相關(guān)技術(shù)方面的概述,之后在基于 DASH 流媒體自適應(yīng)系統(tǒng)的搭建。首先,詳細(xì)闡述了服務(wù)端內(nèi)容準(zhǔn)備階段的視頻轉(zhuǎn)碼和視頻切片步驟。在視頻轉(zhuǎn)碼時(shí)要注意強(qiáng)制 I 幀的原則,在視頻切片時(shí)要注意選擇合適 Group 的大小,這些都為視頻數(shù)據(jù)在播放端重建以及播放中速率的切換提供保證。其次,研究了 VLC 客戶端播放器中 DASH 插件的源碼,論述了每個(gè)模塊的功能及實(shí)現(xiàn)方法,分析了其中的自適應(yīng)策略。
參考文獻(xiàn):
[1]吳樺,王凌,程光. 基于DASH流媒體的TCP擁塞控制算法優(yōu)化[J]. 計(jì)算機(jī)研究與發(fā)展,2019,v.56(09):165-176.
[2]吳曉娜. 全景視頻流媒體傳輸優(yōu)化技術(shù)[D]. 上海交通大學(xué),2019.
[3]田旺. 基于DASH的全景視頻傳輸技術(shù)研究[D]. 北京郵電大學(xué),2019.
[4]韓煦,張國強(qiáng),高茜. 基于SVC與多網(wǎng)絡(luò)接口的DASH調(diào)度算法[J]. 計(jì)算機(jī)工程,2019,v.45;No.508(12):249-254.
[5]亞歷山大·吉拉德,張少波. 用于在模板模式下有效支持短加密區(qū)間的系統(tǒng)和方法:,CN106452759B[P]. 2019.
[6]托馬斯·席爾,托馬斯·維爾特,托馬斯·豪施泰因,等. 用于從服務(wù)器向客戶端發(fā)送媒體內(nèi)容的無線資源管理設(shè)備及方法:,CN104041111B[P]. 2019.