《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于H.264/SVC的P2P內(nèi)容分發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于H.264/SVC的P2P內(nèi)容分發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2012年第7期
胡慶寶1,2, 周 旭2, 白 帆2, 黃 威2, 唐朝偉1等
1. 重慶大學(xué) 通信工程學(xué)院,重慶400044; 2. 中國(guó)科學(xué)院聲學(xué)研究所 高性能網(wǎng)絡(luò)實(shí)驗(yàn)室,北京 100190
摘要: 通過(guò)對(duì)H.264/SVC和互聯(lián)網(wǎng)P2P技術(shù)的研究,提出了復(fù)雜網(wǎng)絡(luò)環(huán)境下的H.264/SVC視頻流分發(fā)策略,設(shè)計(jì)了基于H.264/SVC視頻流的P2P內(nèi)容分發(fā)系統(tǒng)。該系統(tǒng)結(jié)合了H.264/SVC碼流可伸縮和P2P易擴(kuò)展的優(yōu)點(diǎn),實(shí)現(xiàn)了復(fù)雜網(wǎng)絡(luò)環(huán)境下自適應(yīng)視頻碼流傳輸,解決了異構(gòu)終端間視頻資源共享問(wèn)題。
中圖分類(lèi)號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)07-0120-03
Design and implement of P2P content distribution system based on H.264/SVC
Hu Qingbao1,2, Zhou Xu2, Bai Fan2, Huang Wei2, Tang Chaowei1, Zong Wei1
1. College of Communication Engineering, Chongqing University, Chongqing 400044, China; 2. High Performance Network Lab, Institute of Acoustics, Chinese Academy of Sciences, Beijing 100190,China
Abstract: In this paper, the strategies of H.264/SVC video stream distribution in complex network environment is proposed by studying the H.264/SVC and Internet P2P technology, then we design our P2P content distribution system implementation, based on H.264/SVC video stream. Our implementation takes the advantages of the scalability of H.264/SVC stream and the expansibility of P2P technology, enables rapid and reliable adaptive transmission of video streams and achieves the resource sharing among heterogeneous terminals.
Key words : SVC; P2P; content delivery strategy; complex network

    近年來(lái),隨著移動(dòng)帶寬、3G網(wǎng)絡(luò)的迅猛發(fā)展和移動(dòng)終端功能的不斷提高,移動(dòng)互聯(lián)網(wǎng)給用戶(hù)帶來(lái)了更多、更好的多媒體應(yīng)用體驗(yàn)?,F(xiàn)有移動(dòng)終端流媒體業(yè)務(wù)通常對(duì)同一視頻按不同碼流標(biāo)準(zhǔn)多次編碼,產(chǎn)生多種固定碼率視頻流,以應(yīng)對(duì)復(fù)雜網(wǎng)絡(luò)環(huán)境下的終端應(yīng)用。該方法存在視頻源編碼后占用空間大、異構(gòu)網(wǎng)絡(luò)終端間視頻數(shù)據(jù)無(wú)法共享等缺陷???a class="innerlink" href="http://ihrv.cn/tags/伸縮視頻編碼" title="伸縮視頻編碼" target="_blank">伸縮視頻編碼SVC(Scalable Video Coding)[1]作為近年來(lái)新興的一種視頻信源編碼技術(shù),可通過(guò)一次編碼生成高碼率視頻流。SVC根據(jù)終端需求及網(wǎng)絡(luò)傳輸環(huán)境,傳送部分碼流數(shù)據(jù),在終端達(dá)到不同分辨率、質(zhì)量和幀率的解碼效果,能夠有效解決傳統(tǒng)視頻編碼標(biāo)準(zhǔn)輸出碼流的不靈活性,較好地解決了復(fù)雜網(wǎng)絡(luò)環(huán)境中異構(gòu)終端間的視頻共享問(wèn)題,極大地節(jié)省了視頻存儲(chǔ)空間,具有十分廣闊的應(yīng)用前景。

    本文基于SVC碼流結(jié)構(gòu)和移動(dòng)互聯(lián)網(wǎng)特性,結(jié)合傳統(tǒng)流媒體分發(fā)技術(shù),提出了一種可用于解決復(fù)雜網(wǎng)絡(luò)環(huán)境下異構(gòu)終端間資源共享的流媒體分發(fā)策略,實(shí)現(xiàn)了基于SVC視頻編碼格式的P2P內(nèi)容分發(fā)系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了視頻流在P2P網(wǎng)絡(luò)上的可靠分發(fā),并能滿(mǎn)足用戶(hù)對(duì)視頻分辨率和質(zhì)量的不同需求。
1 H.264/SVC碼流分析
    H.264算法在概念上可分為兩層:視頻編碼層VCL(Video Coding Layer),負(fù)責(zé)高效的視頻內(nèi)容表示;網(wǎng)絡(luò)抽象層NAL(Network Abstraction Layer),負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行打包和傳送。NAL單元將視頻數(shù)據(jù)基于bit流傳輸轉(zhuǎn)到基于包的傳輸,實(shí)現(xiàn)了較高的網(wǎng)絡(luò)友好性。H.264/SVC作為H.264編碼標(biāo)準(zhǔn)的可分級(jí)擴(kuò)展,采用基于離散余弦變換的分層編碼方法,支持時(shí)域、空域和質(zhì)量域三個(gè)維度的可伸縮編碼[2]。通過(guò)對(duì)H.264/AVC NAL單元的擴(kuò)展,將各個(gè)層次的視頻訪(fǎng)問(wèn)單元分別編碼成一個(gè)NAL單元,組成SVC編碼視頻序列,如圖1所示。

    SVC碼流主要包括參數(shù)配置NAL單元和壓縮視頻數(shù)據(jù)NAL單元。壓縮視頻數(shù)據(jù)NAL單元通常包括基本層NAL單元和若干擴(kuò)展層NAL單元。基本層NAL包含最小分辨率的空間層和最差質(zhì)量層的編碼數(shù)據(jù),碼率最低,是接收端解碼的基本數(shù)據(jù);擴(kuò)展層NAL單元包含不同空間和質(zhì)量的增強(qiáng)層。所有擴(kuò)展層在解碼時(shí)依賴(lài)于基本層NAL單元和其他低層次的擴(kuò)展NAL單元[3]。在編碼時(shí),通過(guò)設(shè)置參數(shù),將各層連續(xù)固定數(shù)目的圖像幀所對(duì)應(yīng)的視頻數(shù)據(jù)NAL單元組成SVC編碼圖像組GoP(Group of Pictures)。解碼時(shí),根據(jù)需求舍棄部分碼流,讀取基礎(chǔ)層IDR幀之間的各層GoP單元,根據(jù)依賴(lài)關(guān)系獨(dú)立解碼得到相對(duì)于原始碼流分辨率、幀率及質(zhì)量域等縮減的視頻圖像。
2 基于SVC視頻流的內(nèi)容分發(fā)策略
    傳統(tǒng)流媒體P2P分發(fā)技術(shù)(如BASS[4]、BiToS[5]等模型系統(tǒng))對(duì)內(nèi)容源均采用等大小分片的策略。將文件長(zhǎng)度、分片數(shù)、分片長(zhǎng)度等較少的信息輸入torrent文件。P2P過(guò)程中,按照播放優(yōu)先和最少優(yōu)先相結(jié)合的下載策略,選擇peer下載數(shù)據(jù)分片,實(shí)現(xiàn)內(nèi)容的快速分發(fā)或用戶(hù)視頻P2P下載播放。
    移動(dòng)互聯(lián)網(wǎng)作為異構(gòu)網(wǎng)絡(luò),存在無(wú)線(xiàn)鏈路不穩(wěn)定、帶寬較低等缺陷。在終端方面,也存在處理能力較差,播放屏幕較小等問(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作為基本訪(fǎng)問(wèn)單元,并以GoP為單位進(jìn)行編碼,具有較強(qiáng)的塊連續(xù)性。結(jié)合SVC碼流編解碼和P2P分發(fā)特性,在內(nèi)容源分片過(guò)程中,采取將視頻源按同等數(shù)目的GoP單元分片的策略,按照所屬層ID分別存儲(chǔ)于各層數(shù)據(jù)文件中。該策略在保存視頻流塊連續(xù)性的同時(shí)提高了數(shù)據(jù)讀取效率,降低了P2P數(shù)據(jù)傳輸過(guò)程中的數(shù)據(jù)冗余。由于內(nèi)容源GoP單元數(shù)據(jù)長(zhǎng)度不同,分片后每片數(shù)據(jù)長(zhǎng)度大小不等,在做種過(guò)程及文件信息的基礎(chǔ)上,需加入幀率、幀數(shù)、幀數(shù)/GoP、GoP/piece、分層數(shù)、各層文件名和長(zhǎng)度、每個(gè)piece長(zhǎng)度等必要信息。
2.2 內(nèi)容分發(fā)節(jié)點(diǎn)選擇策略
    視頻文件的分發(fā)是一個(gè)從中心到邊緣的推送過(guò)程,包括中心服務(wù)器向邊緣服務(wù)器、邊緣服務(wù)器向多用戶(hù)終端的快速P2P傳輸。傳統(tǒng)互聯(lián)網(wǎng)內(nèi)容分發(fā),由于具有網(wǎng)絡(luò)穩(wěn)定、帶寬較大、終端處理能力強(qiáng)的特點(diǎn),可以隨機(jī)選取peer獲取全部?jī)?nèi)容源到網(wǎng)絡(luò)邊緣或用戶(hù)終端。針對(duì)復(fù)雜網(wǎng)絡(luò)環(huán)境,H.264/SVC具有靈活的碼流選擇特性,可根據(jù)網(wǎng)絡(luò)環(huán)境對(duì)視頻碼流進(jìn)行部分下載。因此,在選擇peer時(shí),要考慮peer的處理能力、網(wǎng)絡(luò)環(huán)境和peer所擁有的視頻流層數(shù)等因素。另外,節(jié)點(diǎn)選擇策略還引入了P4P技術(shù)方案,在內(nèi)容分發(fā)過(guò)程中,引入域的概念,將視頻源分發(fā)到各域的邊緣服務(wù)器??蛻?hù)端在下載視頻時(shí)定時(shí)上報(bào)平均下載速率、CPU使用率、視頻流層數(shù)及下載百分比等信息。tracker通過(guò)統(tǒng)計(jì)peer的域地址和其他上報(bào)信息,定時(shí)更新各域peer列表,向用戶(hù)提供帶寬大、處理能力強(qiáng)、視頻流層數(shù)滿(mǎn)足需求的peer地址,實(shí)現(xiàn)域內(nèi)用戶(hù)的快速下載。該節(jié)點(diǎn)選擇策略針對(duì)能力較弱的終端,取消其數(shù)據(jù)上傳功能,降低了終端的運(yùn)行負(fù)載。針對(duì)能力較強(qiáng)的終端,充分利用其網(wǎng)絡(luò)資源的上傳功能,從提高其他終端的下載效率,較好地實(shí)現(xiàn)了復(fù)雜網(wǎng)絡(luò)環(huán)境下不同終端的資源共享。
2.3 客戶(hù)端碼流選擇策略
    在復(fù)雜網(wǎng)絡(luò)環(huán)境下,客戶(hù)端根據(jù)網(wǎng)絡(luò)環(huán)境和處理能力選擇適合的碼流,達(dá)到符合終端分辨率的視頻流暢播放效果。與傳統(tǒng)視頻點(diǎn)播VoD(Video on Demand)中視頻數(shù)據(jù)流全部下載不同,在終端選擇分片數(shù)據(jù)時(shí),要考慮網(wǎng)絡(luò)帶寬環(huán)境和視頻編碼的分層數(shù)等因素。在保證視頻流暢的基礎(chǔ)上,盡可能下載高質(zhì)量的視頻圖像數(shù)據(jù),保證視頻播放的最優(yōu)效果??蛻?hù)端通過(guò)設(shè)置一定時(shí)間的數(shù)據(jù)緩沖區(qū),根據(jù)緩沖區(qū)中較低層數(shù)據(jù)的下載完成度,判斷當(dāng)前網(wǎng)絡(luò)帶寬。在保證緩沖區(qū)內(nèi)較低層數(shù)據(jù)完整的前提下,結(jié)合帶寬條件和鄰居peer的位圖信息,下載更高一級(jí)擴(kuò)展層的分片數(shù)據(jù)。
3 移動(dòng)流媒體內(nèi)容分發(fā)系統(tǒng)實(shí)現(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ā)布進(jìn)度;數(shù)據(jù)庫(kù)(DB)模塊,存儲(chǔ)系統(tǒng)設(shè)備的域信息和下發(fā)任務(wù)的屬性信息;資源控制(RC)模塊,實(shí)現(xiàn)數(shù)據(jù)庫(kù)中任務(wù)的下發(fā)并上報(bào)任務(wù)的完成狀態(tài);智能發(fā)布(IP)模塊,下載內(nèi)容源到本地并進(jìn)行SVC編碼、分片、做種;邊緣服務(wù)器(ESP)模塊,通過(guò)P2P技術(shù)獲取IP模塊已分片的視頻內(nèi)容,提供用戶(hù)下載;Tracker模塊,收集并管理用戶(hù)下載信息,為其他用戶(hù)提供優(yōu)選的peer。

3.2 關(guān)鍵模塊實(shí)現(xiàn)
    IP模塊完成H.264/SVC視頻流的編碼、分層、做種功能。其具體實(shí)現(xiàn)步驟如下:(1)解析發(fā)布任務(wù)的FTP地址,從FTP地址下載視頻源文件。(2)對(duì)源文件解碼,生成原始視頻序列。(3)通過(guò)設(shè)置幀率、編碼幀數(shù)、GoP大小、可擴(kuò)展層數(shù)以及基本層碼率控制等參數(shù),使用JSVM軟件對(duì)原始視頻進(jìn)行H.264/SVC視頻編碼,按n×GoP間隔插入IDR幀數(shù)據(jù)。(4)對(duì)H.264/SVC視頻編碼數(shù)據(jù)分析,分離各層數(shù)據(jù),按層ID存儲(chǔ)數(shù)據(jù)文件,并記錄最小視頻獨(dú)立解碼單元(n×GOP+IDR幀)對(duì)應(yīng)各層的位置信息。(5)根據(jù)各層分片位置信息,計(jì)算各分片大小,并進(jìn)行數(shù)據(jù)Hash。對(duì)各層數(shù)據(jù)文件,按層ID進(jìn)行排序。按照做種策略,將文件信息寫(xiě)入Torrent文件。(6)對(duì)Torrent文件中info數(shù)據(jù)進(jìn)行哈希(Hash),提取文件infohash值。移動(dòng)文件至infohash對(duì)應(yīng)路徑,并上報(bào)任務(wù)完成狀態(tài)信息。
    ESP模塊完成SVC編碼文件的P2P分發(fā)和用戶(hù)下載功能,具體實(shí)現(xiàn)步驟如下:(1)解析發(fā)布任務(wù)的infohash值和發(fā)布節(jié)點(diǎn)IP地址,建立TCP連接,請(qǐng)求Torrent文件。(2)解析Torrent文件,提取各層文件名,計(jì)算視頻文件分層數(shù);提取文件分片總數(shù),計(jì)算各層分片數(shù);提取各層分片偏移量,計(jì)算各層分片長(zhǎng)度;提取分片對(duì)應(yīng)的Hash值建立位圖。(3)與鄰居節(jié)點(diǎn)交換位圖,根據(jù)位圖信息進(jìn)行選片下載及Hash校驗(yàn)。定時(shí)上報(bào)文件發(fā)布進(jìn)度。(4)發(fā)布完成后,將視頻文件存儲(chǔ)至特定路徑,并上報(bào)任務(wù)完成狀態(tài)信息。該模塊的下載功能使用UDP協(xié)議,采用網(wǎng)絡(luò)環(huán)境驅(qū)動(dòng)模式,客戶(hù)端根據(jù)各自網(wǎng)絡(luò)帶寬環(huán)境、peer位圖和播放進(jìn)度向ESP或鄰居peer請(qǐng)求分片數(shù)據(jù)。模塊根據(jù)taskID映射infohash,定位文件,讀取對(duì)應(yīng)分層文件的piece數(shù)據(jù),實(shí)現(xiàn)用戶(hù)數(shù)據(jù)下載。
3.3 系統(tǒng)視頻效果
    系統(tǒng)對(duì)視頻源進(jìn)行發(fā)布過(guò)程中,通過(guò)IP模塊參數(shù)設(shè)置生成兩個(gè)空間層、兩個(gè)質(zhì)量層,共4層視頻碼流數(shù)據(jù),各層對(duì)應(yīng)碼流由基礎(chǔ)層到擴(kuò)展層依次為15.30 KB/s、16.72 KB/s、12.71 KB/s、36.72 KB/s。在客戶(hù)端使用限速軟件,模擬網(wǎng)絡(luò)帶寬環(huán)境。當(dāng)端口不做限速時(shí),下載速率遠(yuǎn)大于各層碼流總和,即81.45 KB/s。根據(jù)碼流選擇策略,獲取全部碼流數(shù)據(jù)進(jìn)行播放,視頻效果如圖3所示。當(dāng)端口限速在32.02 KB/s~44.73 KB/s之間時(shí),基于視頻流暢播放和播放效果最優(yōu)策略,在當(dāng)前網(wǎng)絡(luò)允許的前提下,舍棄較高擴(kuò)展層的碼流,下載較低兩層的視頻數(shù)據(jù)進(jìn)行播放,視頻效果如圖4所示。

 

 

    本文在傳統(tǒng)P2PCDN技術(shù)的基礎(chǔ)上,融入H.264/SVC視頻編碼技術(shù),結(jié)合移動(dòng)互聯(lián)網(wǎng)的特點(diǎn),實(shí)現(xiàn)了復(fù)雜網(wǎng)絡(luò)環(huán)境下的流媒體分發(fā)模型系統(tǒng)。系統(tǒng)采用非等大小分片傳輸和網(wǎng)絡(luò)環(huán)境驅(qū)動(dòng)選片策略,降低了P2P傳輸過(guò)程中的數(shù)據(jù)冗余,滿(mǎn)足用戶(hù)在不同網(wǎng)絡(luò)環(huán)境下點(diǎn)播視頻播放質(zhì)量的同時(shí),實(shí)現(xiàn)了固網(wǎng)與移動(dòng)網(wǎng)絡(luò)終端間的視頻資源共享。
參考文獻(xiàn)
[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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。