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