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