周慧嬋
改進多信道技術在無線流媒體傳輸系統設計
周慧嬋
在分析多信道無線網絡特征以及流媒體文件特點的基礎上,提出了一種改進的多信道傳輸機制和處理方法,對視頻分幀與幀分子幀、H.264 流媒體數據編解碼、多信道傳輸與接收、丟幀重構和子幀重組幾個關鍵方面進行研究。在Android 移動平臺上設計基于此機制的一整套無線實時流媒體傳輸系統,并進行了測試實驗。測試結果表明,系統運行穩定,性能良好,并且驗證了即使在大量幀丟失的較惡劣無線網絡環境下,運用此系統也可以顯著提高無線實時流媒體視頻播放的流暢性,從而達到有效提高無線實時流媒體傳輸QoS的目的。
無線流媒體;Android;視頻分幀;多信道;實時轉播
隨著流媒體中各項技術的高速發展,基于無線網絡的流媒體服務也被廣泛地研究和開發[1]。然而無線網絡具有很大的不確定性,使無線流媒體終端的QoS很難被保證。提高無線流媒體傳輸的QoS 涉及到了流媒體文件編解碼,無線網絡信道傳輸,接收端的緩存優化理論等許多該研究領域的核心技術[2]。國內關于提高無線流媒體QoS的研究大多關注如何從網絡狀況,所使用的傳輸協議等方面進行改善[3]。在國外則提出了很多解決此類問題不同的思想,其中具有代表性的就是視頻分幀傳輸的思想[4-5],其是從視頻數據處理的角度出發來提高傳輸的服務質量的。本文基于該思想,針對實時無線流媒體傳輸系統的分發性能,對無線流媒體傳輸的各個環節進行了深入細致的研究,在Android移動平臺上設計并實現一整套基于實時背景的無線流媒體傳輸系統。
系統主要的功能就是實現視頻通過無線網絡進行傳輸,并在移動客戶端進行播放。基于視頻分幀多信道傳輸的理論,針對實時無線流媒體傳輸系統的分發性能,采取基于視頻分幀的改進多信道傳輸機制[6],并且充分考慮多信道無線網絡的特征和流媒體文件的特點,提出新的處理方法和機制。系統將視頻原幀拆分為4個子幀分別通過4個無線信道采用UDP協議進行傳輸,系統總體架構如圖1所示:

圖1 系統總體架構圖
在服務器端,當接收到來自客戶端的視頻播放請求后,首先把需要播放的視頻分割成連續的視頻幀,再利用像素分割的方法將每個視頻幀拆分成4個子幀,每個子幀只擁有原幀四分之一的像素。每個視頻子幀通過累積分幀之后形成了自己獨立的子幀流序列,再分別運用編碼技術壓縮傳輸視頻的數據量。為了降低同一傳輸信道中相同視頻幀中子幀的丟失和損壞對畫質和播放流暢度的影響,每個子幀流序列分別延遲0 秒,f 秒,2f 秒,3f 秒,經無線網絡傳輸至目的移動客戶端。延遲時間可以根據無線網絡的特定狀況靈活設定,數值只需在合適范圍內即可。客戶端通過相對應的緩存延遲方法使4個子幀流序列按照原始幀序列進行排序。排序完畢后,CFS(Check Frame Sequence,幀序列檢驗)機制將按照幀序號檢驗在傳輸過程中是否有丟幀的情況發生[4],若無丟幀則直接組合成播放視頻原幀,若有丟幀情況發生,丟幀重構算法將被用于對原始視頻子幀進行恢復。恢復完成后,所有的子幀再重新組合為原始視頻幀并在移動客戶端播放。
在服務器端的設計中所面臨的第一個模塊就是要將需發送的流媒體視頻數據分為視頻幀,然后再將視頻幀分為4個子幀。視頻分幀與幀分子幀的原理為[5]:每一個視頻幀基于像素分割的方法被分成四個擁有相同像素的子幀,首先將整個視頻原幀上的所有像素點先劃分為一個個4*4的像素矩陣,然后再將每一個像素矩陣分割為4個子像素矩陣,每個子像素矩陣相當于各取原像素矩陣中四分之一的像素點,其余為空,每個像素矩陣分割后再分別組成各自對應的子幀,按照這樣的劃分和分割方法,每一個子幀將都擁有原視頻幀四分之一的像素值,有利于均分視頻原幀的像素值。
H.264 編碼模塊:當每一個視頻原幀都按照相同的方法累積分幀后,每個視頻幀的子幀將形成各自的子幀流序列,這樣總共形成了4個子幀流序列[6]。因為本系統主要應用于實時點播和轉播的無線流媒體傳輸系統,如現場新聞的實時聯播,體育比賽的實時轉播等,這類流媒體更加需要快速,流暢播放等特點,并且在接收到客戶端的請求后,為了轉播時間不滯后,服務器一般不預先對視頻進行預處理,而是進行在線實時編碼。所以每一個子幀流序列將采用MDC模式分別進行編碼,編碼標準采用H.264。
多信道傳輸模塊:當每一個子幀流序列分別進行編碼后,就分別通過4個無線信道所組成的MIMO結構進行傳輸。第一個子幀流序列將不進行延遲直接傳輸,第二個,第三個,第四個子幀流序列在進行傳輸之前都將分別緩存在各自的緩沖區中0.5秒,1秒,1.5秒,再進行傳輸。延遲時間間隔定為0.5秒的數據直接取自文獻[11]作者的研究。設置時間間隔傳輸的主要原因是為了最大限度地降低同一傳輸無線信道中,相同視頻幀中子幀的丟失和損壞對后續視頻播放圖像質量及播放流暢度的影響。
改進多信道技術的無線流媒體傳輸系統分成以下幾個主要模塊:視頻分幀與幀分子幀,H.264 流媒體數據編碼與解碼,多信道傳輸,幀序列檢驗和丟幀重構,流媒體播放。
3.1視頻分幀傳輸
實現視頻的分幀傳輸,首先需要將視頻分為連續的視頻幀。開源的Xuggler 類庫提供了利用Java語言解壓縮,修改和重新壓縮任何媒體或者流文件的功能[7]。本系統選用Xuggler 包來實現視頻分幀的功能。通過引用該類庫中的相關方法可實現將原視頻流媒體文件分割成連續的視頻幀。系統主要使用了Java中兩個重要的包:BufferedImage包和ImageIO包中的基本類來實現視頻幀的分割。
3.2H.264 流媒體數據編解碼
為了配合服務器端采用H.264 編碼標準傳輸數據,在Android 端需要使用Java的JNI(Java Native Interface)技術,通過使用C/C++編寫H264 解碼函數。然后使函數能夠在Android 端進行使用,就需要使用Android NDK 對C/C++源碼進行編譯,生成庫文件后供在應用層端的Java 程序調用,來實現對數據的解碼。
3.3多信道傳輸與接收
多信道傳輸與接收模塊是本文系統中最重要的模塊,系統采用Java NIO 中的Channel 對象和多線程技術相結合的方式來實現,本系統選用UDP 協議作為主要傳輸層協議。Server 類(作為服務器端)中的datagram channels(數據報通道)被設置成不阻塞且一直監聽注冊的,當有來自客戶端的連接請求后,客戶端的socket 地址將會首先被添加到服務器端程序的線程池中。
Writer 類用來處理流媒體數據的多信道傳輸,線程池中的某個線程被喚醒后,通過識別客戶端socket 地址,開辟新的通道channels 來傳輸流媒體數據。4個子幀流序列通過4個無線信道進行傳輸,每個無線信道由一個線程進行控制。
在Android 客戶端,同樣需要打開四個通道來接收傳輸自服務器端的流媒體數據,實現的方法也同服務器端類似,使用多線程來控制通道的操作,多線程在這種情況下的使用優勢將更加凸顯,主要在于線程之間可以共用內存,相互間的切換速度更快,提高了執行效率,改善了移動客戶端CPU處理能力遠不及PC機的缺點。對于傳輸延遲和客戶端緩存延遲的實現,只需指定控制信道的線程的睡眠時間即可。
接收傳輸自服務器端的流媒體數據同時,需要將前3個子幀流序列的數據暫時緩存在各自的緩沖池中并進行相應時間的延遲,直到第四個子幀流序列數據也完全接收完畢后,才將所有幀數據按照順序進行排序,用于檢驗是否有丟幀的情況發生。
3.4丟幀重構和子幀重組
當4個子幀流序列完全接收完畢后,需要按照序號進行幀序列檢驗,檢驗在傳輸過程中是否有丟幀的情況發生,如果有丟幀,則需采用相應的丟幀重構機制對丟失的視頻子幀進行重新構造。丟幀重構的基本設計原理已在第三章中闡述,有多種重構方法,比較常用的是計算丟失子幀的相鄰幀的像素平均值,并替代其像素值彌補的方法。但是由于系統實驗證明,乘除運算耗費比較多的系統資源,對于內存容量較小的移動客戶端并不適用,所以改用移位運算來獲得所需替代子幀的像素值。
如果無線網絡環境良好,在傳輸過程中無丟幀情況發生,則將已分割的子幀重新組合后進行播放,或者將丟失的幀重構后也需要將所有幀一并進行重新組合。系統中重組算法都是在recreate()方法中進行實現,將所有子幀的的像素點逐一讀取后再重新以正確的順序組合為一幅幅原幀圖像。
4.1丟幀視頻的流暢度與畫質測試
測試一段長約1 分鐘,MP4 格式的簡短視頻,分辨率為標準176*144像素值,發送幀率控制為30 幀/秒,視頻幀總數約為1800 幀,無線網絡采用標準IEEE802.11,無線信道帶寬約為240kbps。通過發送不同質量的視頻來模擬較惡劣的無線網絡環境,分別對四種不同的情況進行了視頻播放測試:原幀播放,原幀分別丟失1、2、3個子幀并重構后進行播放,直觀效果如圖2所示:

圖2 丟幀測試效果圖
圖2中b,c,d 分別表示丟失1、2、3個子幀后接收到的視頻畫面效果(此處模擬的情況是需發送的每一個視頻幀都丟失1,2,3個子幀)。
從圖2可以看出,丟幀后視頻圖像畫質與原圖像相比清晰度下降,但仍可分辨出圖像輪廓。經測試丟幀并在客戶端重構后的視頻依然可以流暢播放,只是對視頻的畫面質量產生影響,丟幀數量越多,則視頻畫質越差。
為了測試在信號不強的無線網絡環境下,本文無線流媒體傳輸系統與運用傳統方法傳輸流媒體的系統在流暢性方面的不同表現,使用和實驗一相同的測試環境,測試視頻選取30段不同質量,相同制式的簡短視頻進行實驗并統計數據,每段視頻播放時間在3-5分鐘之間,總共播放時間約為139分鐘。在同一臺服務器上部署兩個傳輸系統,先使用手機自帶的普通流媒體播放器播放這些視頻,調整手機位置尋找視頻出現斷續播放的位置,記錄失真的次數并記錄。再使用同一手機和部署本文流媒體系統的服務器進行請求并測試,在同一地點用采取播放同樣這些視頻并記錄,為測試的記錄情況表。如表1所示:

表1 不同系統播放視頻失真情況對比表
由表1數據可以明顯看出,本文系統很大程度上減少了在無線網絡傳輸過程中,因嚴重丟幀造成視頻失真的發生次數。
4.2不同流媒體系統播放視頻流暢度對比的客觀與主觀測試
本文在相同的無線信道狀態下(信道誤比特率為10-3),所采用的30 段簡短視頻中,隨機抽取5 段視頻的各前300幀進行仿真實驗。無線網絡環境也和實驗一相同(帶寬240kbps,幀率30 幀/秒)。同樣采用普通流媒體系統和本文系統分別傳輸這5 段視頻幀序列來進行對比,對比值選用PSNR 值,它是一種評價圖像的客觀標準,單位為dB,PSNR值越大,就代表視頻播放的失真現象和次數越少。各視頻幀序列在相同信道狀況下兩種傳輸系統的對比實驗結果,如表2所示:

表2 不同系統對不同幀序列在相同信道狀況下的對比PSNR 值測試結果
從表2實驗結果得出,與普通流媒體系統相比,本文系統能獲得平均2-3dB左右的質量增益,表明在客戶端能獲得更高的視頻重建質量。
無線流媒體傳輸系統具有一般流媒體系統所具有的最基本功能,并且驗證了即使在大量丟幀的較惡劣無線網絡環境下,此系統依然可以保證流媒體視頻流暢播放的可靠性和正確性,并且系統性能良好。總之,此論文工作不但可以作為后續理論研究和系統完善的很好基礎藍本,而且具有很大的實際應用價值,特別適合推廣到實時流媒體傳輸的特定應用場合中,如實況球賽的轉播,實時新聞的現場直播,視頻遠程會議,可視電話,遠程醫療以及最新的3G 實時通信系統等。
[1] 楊明極, 畢晶. 基于Android 視頻客戶端的設計[J]. 電視技術, 2012,36(3):P1-2.
[2] 廖勇, 周德松. 流媒體技術入門與提高[J]. 科技在線,2006: 69-98.
[3] 馮開江. 移動流媒體技術的視頻編碼標準及協議[J]. 廣播電視信息,2007(12):P34-37.
[4] 肖民. 移動流媒體中的編碼技術簡介[J]. 廣播電視信息,2009(07):27-28.
[5] Tu-Chih Wang, Hung-Chi Fang. Low Delay, Error Robust Wireless Video. Transmission Architecture for Video Communication[J]. IEEE, 2007:265-268.
[6] 盧雪晶, 盧官明. 適用于實時視頻傳輸的分層多重描述編碼[J]. 電信快報-網絡通信, 2005(11):P3-4.
[7] 孫松源, 吳建國. 基于RTP 和Android 的視頻傳輸的研究實現方法[J]. 電腦知識與技術, 2012.4, 8(4):P2-3.
Design of Improved Multi-channel Technology for Wireless Streaming System
Zhou Huichan
(China United Network Comminications Co. LTD., Shanghai Branch, Shanghai 200120, China)
This paper analyzes the multi-channel wireless network features and characteristics of streaming media files, then proposes an improved multi-channel transmission mechanisms and treatment methods which research several key aspects, such as sub-frame and the frame of the video frame elements, H.264 streaming data encoding and decoding, multi-channel transmission and reception, dropped frames restruction and subframes reconstruction. On the Android mobile platform, it designs a set of wireless real-time streaming media transmission system based on this mechanism, and is tested. The experimental results show that the system is stable, good performance. And it is verified that even in a large number of frame loss of a relatively harsh environment of a wireless network, using this system can also be significantly improved wireless real-time streaming video playback smooth, so as to effectively improve wireless real-time streaming media transmission QoS.
Wireless Streaming; Android; Video Sub-frame; Multi-channel; Real-time Broadcast
TP311
A
1007-757X(2016)06-0055-03
2016.03.20)
周慧嬋(1982-),女,碩士,陜西人,中國聯合網絡通信有限公司上海市分公司,研究方向:聯通固網資源核查技術方案,上海,200120