文獻標識碼: A
文章編號: 0258-7998(2012)07-0120-03
近年來,隨著移動帶寬、3G網(wǎng)絡(luò)的迅猛發(fā)展和移動終端功能的不斷提高,移動互聯(lián)網(wǎng)給用戶帶來了更多、更好的多媒體應(yīng)用體驗。現(xiàn)有移動終端流媒體業(yè)務(wù)通常對同一視頻按不同碼流標準多次編碼,產(chǎn)生多種固定碼率視頻流,以應(yīng)對復(fù)雜網(wǎng)絡(luò)環(huán)境下的終端應(yīng)用。該方法存在視頻源編碼后占用空間大、異構(gòu)網(wǎng)絡(luò)終端間視頻數(shù)據(jù)無法共享等缺陷???a class="innerlink" href="http://theprogrammingfactory.com/tags/伸縮視頻編碼" title="伸縮視頻編碼" target="_blank">伸縮視頻編碼SVC(Scalable Video Coding)[1]作為近年來新興的一種視頻信源編碼技術(shù),可通過一次編碼生成高碼率視頻流。SVC根據(jù)終端需求及網(wǎng)絡(luò)傳輸環(huán)境,傳送部分碼流數(shù)據(jù),在終端達到不同分辨率、質(zhì)量和幀率的解碼效果,能夠有效解決傳統(tǒng)視頻編碼標準輸出碼流的不靈活性,較好地解決了復(fù)雜網(wǎng)絡(luò)環(huán)境中異構(gòu)終端間的視頻共享問題,極大地節(jié)省了視頻存儲空間,具有十分廣闊的應(yīng)用前景。
本文基于SVC碼流結(jié)構(gòu)和移動互聯(lián)網(wǎng)特性,結(jié)合傳統(tǒng)流媒體分發(fā)技術(shù),提出了一種可用于解決復(fù)雜網(wǎng)絡(luò)環(huán)境下異構(gòu)終端間資源共享的流媒體分發(fā)策略,實現(xiàn)了基于SVC視頻編碼格式的P2P內(nèi)容分發(fā)系統(tǒng)。該系統(tǒng)實現(xiàn)了視頻流在P2P網(wǎng)絡(luò)上的可靠分發(fā),并能滿足用戶對視頻分辨率和質(zhì)量的不同需求。
1 H.264/SVC碼流分析
H.264算法在概念上可分為兩層:視頻編碼層VCL(Video Coding Layer),負責高效的視頻內(nèi)容表示;網(wǎng)絡(luò)抽象層NAL(Network Abstraction Layer),負責對數(shù)據(jù)進行打包和傳送。NAL單元將視頻數(shù)據(jù)基于bit流傳輸轉(zhuǎn)到基于包的傳輸,實現(xiàn)了較高的網(wǎng)絡(luò)友好性。H.264/SVC作為H.264編碼標準的可分級擴展,采用基于離散余弦變換的分層編碼方法,支持時域、空域和質(zhì)量域三個維度的可伸縮編碼[2]。通過對H.264/AVC NAL單元的擴展,將各個層次的視頻訪問單元分別編碼成一個NAL單元,組成SVC編碼視頻序列,如圖1所示。
SVC碼流主要包括參數(shù)配置NAL單元和壓縮視頻數(shù)據(jù)NAL單元。壓縮視頻數(shù)據(jù)NAL單元通常包括基本層NAL單元和若干擴展層NAL單元?;緦覰AL包含最小分辨率的空間層和最差質(zhì)量層的編碼數(shù)據(jù),碼率最低,是接收端解碼的基本數(shù)據(jù);擴展層NAL單元包含不同空間和質(zhì)量的增強層。所有擴展層在解碼時依賴于基本層NAL單元和其他低層次的擴展NAL單元[3]。在編碼時,通過設(shè)置參數(shù),將各層連續(xù)固定數(shù)目的圖像幀所對應(yīng)的視頻數(shù)據(jù)NAL單元組成SVC編碼圖像組GoP(Group of Pictures)。解碼時,根據(jù)需求舍棄部分碼流,讀取基礎(chǔ)層IDR幀之間的各層GoP單元,根據(jù)依賴關(guān)系獨立解碼得到相對于原始碼流分辨率、幀率及質(zhì)量域等縮減的視頻圖像。
2 基于SVC視頻流的內(nèi)容分發(fā)策略
傳統(tǒng)流媒體P2P分發(fā)技術(shù)(如BASS[4]、BiToS[5]等模型系統(tǒng))對內(nèi)容源均采用等大小分片的策略。將文件長度、分片數(shù)、分片長度等較少的信息輸入torrent文件。P2P過程中,按照播放優(yōu)先和最少優(yōu)先相結(jié)合的下載策略,選擇peer下載數(shù)據(jù)分片,實現(xiàn)內(nèi)容的快速分發(fā)或用戶視頻P2P下載播放。
移動互聯(lián)網(wǎng)作為異構(gòu)網(wǎng)絡(luò),存在無線鏈路不穩(wěn)定、帶寬較低等缺陷。在終端方面,也存在處理能力較差,播放屏幕較小等問題。加之H.264/SVC內(nèi)容源的碼流結(jié)構(gòu)特性,使得復(fù)雜網(wǎng)絡(luò)環(huán)境下SVC流媒體分發(fā)策略和傳統(tǒng)內(nèi)容分發(fā)存在較大差異。
2.1 SVC視頻文件分片做種策略
H.264/SVC視頻編碼將各層NAL作為基本訪問單元,并以GoP為單位進行編碼,具有較強的塊連續(xù)性。結(jié)合SVC碼流編解碼和P2P分發(fā)特性,在內(nèi)容源分片過程中,采取將視頻源按同等數(shù)目的GoP單元分片的策略,按照所屬層ID分別存儲于各層數(shù)據(jù)文件中。該策略在保存視頻流塊連續(xù)性的同時提高了數(shù)據(jù)讀取效率,降低了P2P數(shù)據(jù)傳輸過程中的數(shù)據(jù)冗余。由于內(nèi)容源GoP單元數(shù)據(jù)長度不同,分片后每片數(shù)據(jù)長度大小不等,在做種過程及文件信息的基礎(chǔ)上,需加入幀率、幀數(shù)、幀數(shù)/GoP、GoP/piece、分層數(shù)、各層文件名和長度、每個piece長度等必要信息。
2.2 內(nèi)容分發(fā)節(jié)點選擇策略
視頻文件的分發(fā)是一個從中心到邊緣的推送過程,包括中心服務(wù)器向邊緣服務(wù)器、邊緣服務(wù)器向多用戶終端的快速P2P傳輸。傳統(tǒng)互聯(lián)網(wǎng)內(nèi)容分發(fā),由于具有網(wǎng)絡(luò)穩(wěn)定、帶寬較大、終端處理能力強的特點,可以隨機選取peer獲取全部內(nèi)容源到網(wǎng)絡(luò)邊緣或用戶終端。針對復(fù)雜網(wǎng)絡(luò)環(huán)境,H.264/SVC具有靈活的碼流選擇特性,可根據(jù)網(wǎng)絡(luò)環(huán)境對視頻碼流進行部分下載。因此,在選擇peer時,要考慮peer的處理能力、網(wǎng)絡(luò)環(huán)境和peer所擁有的視頻流層數(shù)等因素。另外,節(jié)點選擇策略還引入了P4P技術(shù)方案,在內(nèi)容分發(fā)過程中,引入域的概念,將視頻源分發(fā)到各域的邊緣服務(wù)器??蛻舳嗽谙螺d視頻時定時上報平均下載速率、CPU使用率、視頻流層數(shù)及下載百分比等信息。tracker通過統(tǒng)計peer的域地址和其他上報信息,定時更新各域peer列表,向用戶提供帶寬大、處理能力強、視頻流層數(shù)滿足需求的peer地址,實現(xiàn)域內(nèi)用戶的快速下載。該節(jié)點選擇策略針對能力較弱的終端,取消其數(shù)據(jù)上傳功能,降低了終端的運行負載。針對能力較強的終端,充分利用其網(wǎng)絡(luò)資源的上傳功能,從提高其他終端的下載效率,較好地實現(xiàn)了復(fù)雜網(wǎng)絡(luò)環(huán)境下不同終端的資源共享。
2.3 客戶端碼流選擇策略
在復(fù)雜網(wǎng)絡(luò)環(huán)境下,客戶端根據(jù)網(wǎng)絡(luò)環(huán)境和處理能力選擇適合的碼流,達到符合終端分辨率的視頻流暢播放效果。與傳統(tǒng)視頻點播VoD(Video on Demand)中視頻數(shù)據(jù)流全部下載不同,在終端選擇分片數(shù)據(jù)時,要考慮網(wǎng)絡(luò)帶寬環(huán)境和視頻編碼的分層數(shù)等因素。在保證視頻流暢的基礎(chǔ)上,盡可能下載高質(zhì)量的視頻圖像數(shù)據(jù),保證視頻播放的最優(yōu)效果??蛻舳送ㄟ^設(shè)置一定時間的數(shù)據(jù)緩沖區(qū),根據(jù)緩沖區(qū)中較低層數(shù)據(jù)的下載完成度,判斷當前網(wǎng)絡(luò)帶寬。在保證緩沖區(qū)內(nèi)較低層數(shù)據(jù)完整的前提下,結(jié)合帶寬條件和鄰居peer的位圖信息,下載更高一級擴展層的分片數(shù)據(jù)。
3 移動流媒體內(nèi)容分發(fā)系統(tǒng)實現(xiàn)
3.1 系統(tǒng)整體架構(gòu)及模塊功能
基于H.264/SVC的P2PCDN系統(tǒng)整體架構(gòu)如圖2所示。系統(tǒng)包括內(nèi)容管理系統(tǒng)(CMS)模塊,為管理員提供任務(wù)發(fā)布、刪除、發(fā)布域等選擇接口,展示任務(wù)發(fā)布進度;數(shù)據(jù)庫(DB)模塊,存儲系統(tǒng)設(shè)備的域信息和下發(fā)任務(wù)的屬性信息;資源控制(RC)模塊,實現(xiàn)數(shù)據(jù)庫中任務(wù)的下發(fā)并上報任務(wù)的完成狀態(tài);智能發(fā)布(IP)模塊,下載內(nèi)容源到本地并進行SVC編碼、分片、做種;邊緣服務(wù)器(ESP)模塊,通過P2P技術(shù)獲取IP模塊已分片的視頻內(nèi)容,提供用戶下載;Tracker模塊,收集并管理用戶下載信息,為其他用戶提供優(yōu)選的peer。
3.2 關(guān)鍵模塊實現(xiàn)
IP模塊完成H.264/SVC視頻流的編碼、分層、做種功能。其具體實現(xiàn)步驟如下:(1)解析發(fā)布任務(wù)的FTP地址,從FTP地址下載視頻源文件。(2)對源文件解碼,生成原始視頻序列。(3)通過設(shè)置幀率、編碼幀數(shù)、GoP大小、可擴展層數(shù)以及基本層碼率控制等參數(shù),使用JSVM軟件對原始視頻進行H.264/SVC視頻編碼,按n×GoP間隔插入IDR幀數(shù)據(jù)。(4)對H.264/SVC視頻編碼數(shù)據(jù)分析,分離各層數(shù)據(jù),按層ID存儲數(shù)據(jù)文件,并記錄最小視頻獨立解碼單元(n×GOP+IDR幀)對應(yīng)各層的位置信息。(5)根據(jù)各層分片位置信息,計算各分片大小,并進行數(shù)據(jù)Hash。對各層數(shù)據(jù)文件,按層ID進行排序。按照做種策略,將文件信息寫入Torrent文件。(6)對Torrent文件中info數(shù)據(jù)進行哈希(Hash),提取文件infohash值。移動文件至infohash對應(yīng)路徑,并上報任務(wù)完成狀態(tài)信息。
ESP模塊完成SVC編碼文件的P2P分發(fā)和用戶下載功能,具體實現(xiàn)步驟如下:(1)解析發(fā)布任務(wù)的infohash值和發(fā)布節(jié)點IP地址,建立TCP連接,請求Torrent文件。(2)解析Torrent文件,提取各層文件名,計算視頻文件分層數(shù);提取文件分片總數(shù),計算各層分片數(shù);提取各層分片偏移量,計算各層分片長度;提取分片對應(yīng)的Hash值建立位圖。(3)與鄰居節(jié)點交換位圖,根據(jù)位圖信息進行選片下載及Hash校驗。定時上報文件發(fā)布進度。(4)發(fā)布完成后,將視頻文件存儲至特定路徑,并上報任務(wù)完成狀態(tài)信息。該模塊的下載功能使用UDP協(xié)議,采用網(wǎng)絡(luò)環(huán)境驅(qū)動模式,客戶端根據(jù)各自網(wǎng)絡(luò)帶寬環(huán)境、peer位圖和播放進度向ESP或鄰居peer請求分片數(shù)據(jù)。模塊根據(jù)taskID映射infohash,定位文件,讀取對應(yīng)分層文件的piece數(shù)據(jù),實現(xiàn)用戶數(shù)據(jù)下載。
3.3 系統(tǒng)視頻效果
系統(tǒng)對視頻源進行發(fā)布過程中,通過IP模塊參數(shù)設(shè)置生成兩個空間層、兩個質(zhì)量層,共4層視頻碼流數(shù)據(jù),各層對應(yīng)碼流由基礎(chǔ)層到擴展層依次為15.30 KB/s、16.72 KB/s、12.71 KB/s、36.72 KB/s。在客戶端使用限速軟件,模擬網(wǎng)絡(luò)帶寬環(huán)境。當端口不做限速時,下載速率遠大于各層碼流總和,即81.45 KB/s。根據(jù)碼流選擇策略,獲取全部碼流數(shù)據(jù)進行播放,視頻效果如圖3所示。當端口限速在32.02 KB/s~44.73 KB/s之間時,基于視頻流暢播放和播放效果最優(yōu)策略,在當前網(wǎng)絡(luò)允許的前提下,舍棄較高擴展層的碼流,下載較低兩層的視頻數(shù)據(jù)進行播放,視頻效果如圖4所示。
本文在傳統(tǒng)P2PCDN技術(shù)的基礎(chǔ)上,融入H.264/SVC視頻編碼技術(shù),結(jié)合移動互聯(lián)網(wǎng)的特點,實現(xiàn)了復(fù)雜網(wǎng)絡(luò)環(huán)境下的流媒體分發(fā)模型系統(tǒng)。系統(tǒng)采用非等大小分片傳輸和網(wǎng)絡(luò)環(huán)境驅(qū)動選片策略,降低了P2P傳輸過程中的數(shù)據(jù)冗余,滿足用戶在不同網(wǎng)絡(luò)環(huán)境下點播視頻播放質(zhì)量的同時,實現(xiàn)了固網(wǎng)與移動網(wǎng)絡(luò)終端間的視頻資源共享。
參考文獻
[1] Joint Draft ITU-T Rec.H.264-ISO/IEC 14496-10/Amd.3. Scalable Video Coding[S]. Standard,2007.
[2]黃曉濤.P2P流媒體內(nèi)容分發(fā)服務(wù)質(zhì)量保障的編碼與傳輸技術(shù)研究[D]. 武漢:華中科技大學(xué),2010.
[3] Wang Yekui, HANNUKSELA M M, PATEUX S, et al.System and tranport interface of SVC[C].IEEE Transactions on Circuits and Systems for Video Technology, IEEE Circuits and Systems Society, Santa Clara Valley:2007,17(9):1149-1163.
[4] DANA C, LI D, HARRISON D, et al. BASS: BitTorrent assisted streaming system for video-on-demand[C].Proc of IEEE International Conference on Multimedia Signal Processing. Shanghai: IEEE MMSP Press, 2005:1-4.
[5] VLAVIANOS A, ILIOFOTOU M, FALOUTSOS M. BiToS: enhancing BitTorrent for supporting streaming applications[C].Proc of International Conference on Computer Communications. Barcelona:IEEE Global Internet Symposium Press,2006:1-6.