摘 要:論文闡述了基于C/S模式的流媒體傳輸系統的原理,給出了基于C/S模式傳輸系統的模型。該模型建立在Intranet基礎上,使用MPEG-4音視頻編碼技術,采用RTP/RTCP協議。
關鍵詞:流媒體MPEG-4視頻編碼技術RTP/RTCPQoS控制C/S模式
中圖分類號:G420文獻標識碼:A文章編號:1674-098X(2011)06(b)-0110-02
1 前言
隨著互聯網的普及和多媒體技術在互聯網上的應用,實時傳送音頻、視頻、多媒體動畫等媒體文件的技術即流媒體技術成為了熱點。傳統的因特網使用TCP/IP協議,數據傳輸有較高的可靠性而對延遲不敏感。基于C/S模式,建立在Intranet基礎上的流媒體傳輸系統研究的流媒體傳輸系統模型采用RTP/RTCP協議,對延遲有很高的要求,極大地方便了音頻、視頻節目在網絡中的傳輸。
2 基于C/S模式的流媒體傳輸系統原理
基于C/S模式的流媒體傳輸系統模型使用MPEG-4音視頻編碼技術,采用RTP/RTCP協議。MPEG-4音視頻編碼技術的特征:(1)編碼是基于對象的。它把圖像和視頻分割成不同的對象,對每一個對象的編碼形成一個對象碼流層,該碼流中包含著對象的形狀、位置、紋理及其他方面的屬性。對一幅圖像編碼所形成的碼流由一系列對象層碼流構成,用戶可直接對“對象層”進行存取操作,這樣就使得操作、控制對象成為可能,而傳統的編碼都是基于幀的,無法對對象進行操作。(2)MPEG-4可根據現場帶寬和誤碼率的客觀條件在時域和空域有靈活的可擴展性。時域擴展是在帶寬允許時在基本層上的增強層中增加幀率,在寬窄時在基本層中減少幀率;空域擴展是指對基本層中的圖像進行插值,增加或減少空間率,以達到充分利用帶寬,使圖像質量更好。
為了實現上面所說的功能,MPEG-4將音視頻碼流的語法層次分為視頻會話VS、視頻對象VO、視頻對象層VOL和視頻對象平面VOP。一個完整的視頻序列由若干個VS構成。VO是給定場景中的一些具體對象,是用戶能夠存取和操作的實體。若干個VO構成一個VS;VOL是表明VO的空間和時間分辨率的一個類型,與空間和時間分級性密切相關。每個VO可有多層VOL;VOP是VO在某一時刻的表象,即某一幀VO,MPEG-4對每個VOP獨立進行編解碼。
實時傳輸協議(Real-timeTransportProtocol,PRT)是在 Internet上處理多媒體數據流的一種網絡協議,利用它能夠在1對1(Unicast,單播)或者1對多(Multicast,多播)的網絡環境中實現流媒體數據的實時傳輸。RTP通常使用UDP來進行多媒體數據的傳輸,但如果需要的話可以使用TCP或者ATM等其它協議。RTP協議的設計目的是提供實時數據傳輸中的時間戳信息以及各數據流的同步功能。RTP協議提供序列號字段使接受方通過檢測收到的分組序列號判斷是否有分組丟失,并可重新恢復發送時的分組順序;提供時間戳字段用于重新建立原始音頻、視頻的時序,幫助接受方確定數據到達時間的一致性或變化;提供同步源標識符(SSRC)字段,在接收端為包分組從而進行回放。RTP本身并不能為按序傳輸數據包提供可靠的保證,也不提供流量控制和擁塞控制,這些都由實時傳輸控制協議RTCP來負責完成。通常RTCP會采用與RTP相同的分發機制,向會話中的所有成員周期性地發送控制信息,應用程序通過接收這些數據,從中獲取相關資料,從而能夠對服務質量進行控制或者對網絡狀況進行診斷。
當應用程序開始一個RTP會話時將使用兩個端口:一個給RTP,一個給RTCP。在RTP會話期間,各參與者周期性地傳送RTCP包。RTCP包中含有已發送的數據包的數量、丟失的數據包的數量等統計資料,因此,服務器可以利用這些信息動態地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網上的實時數據。
3 基于C/S模式的流媒體傳輸系統的傳輸模型
上圖是基于RTP的MPEG-4音視頻傳輸模型。MPEG-4數據流分別被封裝上 RTP報頭、UDP報頭和IP報頭,然后IP數據包通過Intranet向接收端發送。當發送端收到已被正常編碼壓縮的MPEG-4碼流后,按照RTP數據傳輸協議的報文格式裝入RTP報文的數據負載段,并配置RTP報文頭部的時間戳、同步信息、序列號等參數,此時數據報文已被‘流’化了;同時發送端周期性地接收RTCP包,將Qos反饋控制信息發送到視頻服務器,服務器利用這些信息動態地改變自身參數設置。接收端收到IP包后先分析RTP包頭,判斷版本、長度、負載類型等信息的有效性,更新緩沖區的RTP信息,如收到的字節數、視頻幀數、包數、序列號數等信息;按照RTP時間戳和包序列號等進行信源同步,整理RTP包順序,重構視頻幀;最后根據負載類型標識進行解碼,將數據放入緩存供解碼器解碼輸出;同時接收端根據RTP包中的信息周期性回送包含Qos反饋控制信息的RTCP包到數據發送端以檢測發送端和接收端數據的一致性。
4 基于C/S模式的流媒體傳輸系統的設計
本系統由3個部分構成:壓縮編碼、流媒體服務器和客戶端播放軟件構成。壓縮編碼部分采用最新的MPEG-4視頻編碼技術。客戶端播放器使用采用數據緩沖新技術的流媒體播放器。下面就流媒體服務器進行重點介紹。
4.1 流媒體服務器的主要功能
(1)響應客戶的請求,把媒體數據傳送給客戶。流媒體服務器在流媒體傳送期間必須與客戶的播放器保持雙向通信。
(2)響應廣播的同時能夠及時處理新接收的實時廣播數據,并將其編碼。
4.2 流媒體服務器的服務方式
流媒體服務器的服務方式主要有以下三種:單播、組播、點播與廣播。
單播:一對一的播放方式,即一臺服務器服務于一臺客戶機。
組播:一對多的播放方式,即一臺服務器服務于多臺客戶機。
點播:點播是指客戶端主動連接服務器。客戶享有主動權,能夠選擇內容項目,并可以進行開始、停止、后退、快進或暫停等操作。
廣播:指的是用戶被動地接收流,服務器端數據包的單獨一個拷貝將發送給網絡上的所有用戶,客戶端接收流,但不能控制流。
4.3 服務器算法設計
服務器軟件模型主要有兩種,即并發服務器和循環服務器。循環服務器(Iterative Server)是指在一個時刻只處理一個請求的服務器。并發服務器(Concurrent Server)是指在一個時刻可以處理多個請求的服務器。事實上,多數服務器沒有用于同時處理多個請求的冗余設備,而是提供一種表面上的并發性,方法是依靠執行多個線程,每個線程處理一個請求,從客戶的角度看,服務器就像在并發地與多個客戶通信。
由于流媒體服務時間的不定性和數據交互實時性的請求,流媒體服務器一般采用并發服務器算法。下面構建了一個基本的流媒體服務器,能夠同時響應多個用戶的請求,把本地硬盤流媒體文件或實時數據流發送給用戶。在應用中,把客戶分為請求實時數據的實時客戶和請求文件數據的文件客戶兩類。主要算法為:
(1)打開設備,分配資源。當設備準備好時,創建RTP、RTCP兩個實時服務線程。
(2)創建一個UDP套接字并將其綁定到所提供服務的地址之上。
(3)反復調用接收模塊,接收來自客戶的RTCP報告,根據其類型做出響應。對新實時客戶的請求,把客戶地址添加到實時服務的客戶列表中,對新文件客戶的請求,則創建一個新RTP文件服務線程和一個新RTCP文件服務線程;對已經在服務中的客戶則根據RTCP報告的內容調整服務(如表1)。
4.4 流媒體服務器設計中應注意的問題
(1)會話和流的兩級分用
一個RTP會話(Session)包括傳給某個指定目的地對(Destination Pair)的所有通信量,發送方可能包括多個。而從同一個同步源發出的RTP分組序列稱為流(Stream),一個RTP會話可能包含多個RTP流。一個 RTP分組在服務器端發送出去的時候總是要指定屬于哪個會話和流,在接收時也需要進行兩級分用,即會話分用和流分用。只有當RTP使用同步源標識 (SSRC)和分組類型(PTYPE)把同一個流中的分組組合起來,才能夠使用序列號(Sequence Number)和時間戳(Timestamp)對分組進行排序和正確回放。
(2)多線程的管理
并發服務器模式要求用多線程來提供服務,所以多線程的管理十分重要。在本文構建的服務器中,不同客戶的請求和反饋都由服務器的主線程處理,由于實時數據的獨有性,不同實時客戶可以共用兩個RTP和RTCP實時服務線程,從而大大減小服務器的負擔,而每個文件客戶由于請求的文件不同,相應地對速度和開始時間的要求都可能不同,所以都要有各自的RTP和RTCP文件服務線程。
RTP服務線程負責把實時數據流發送給客戶,RTCP服務線程根據RTP線程的統計數據,產生發送方報告給客戶。這兩個線程之間通過一段共享內存交互統計數據,對共享內存必須設置互斥體進行保護,防止讀寫錯誤。在這種方式下,服務器可以根據每個用戶的不同請求和具體情況方便地提供不同的服務。
(3)時間戳的處理
時間戳字段是RTP首部中說明數據包時間的同步信息,是數據能以正確的時間順序恢復的關鍵。時間戳的值給出了分組中數據的第一個字節的采樣時間(Sampling Instant),要求發送方時間戳的時鐘是連續、單調增長的,即使在沒有數據輸入或發送數據時也是如此。在靜默時,發送方不必發送數據,保持時間戳的增長,在接收端,由于接收到的數據分組的序號沒有丟失,就知道沒有發生數據丟失,而且只要比較前后分組的時間戳的差異,就可以確定輸出的時間間隔。RTP規定一次會話的初始時間戳必須隨機選擇,但協議沒有規定時間戳的單位,也沒有規定該值的精確解釋,而是由負載類型來確定時鐘的顆粒,這樣各種應用類型可以根據需要選擇合適的輸出計時精度。在RTP傳輸音頻數據時,一般選定邏輯時間戳速率與采樣速率相同,但是在傳輸視頻數據時,必須使時間戳速率大于每幀的一個滴答。如果數據是在同一時刻采樣的,協議標準還允許多個分組具有相同的時間戳值。
(4)媒體數據發送速度的控制
由于RTP協議沒有規定RTP分組的長度和發送數據的速度,因而需要根據具體情況調整服務器端發送媒體數據的速度。對來自設備的實時數據可以采取等時間間隔訪問設備緩沖區,在有新數據輸入時發送數據的方式,時間戳的設置相對容易。對已經錄制好的本地硬盤上的媒體文件,以H.263格式的文件為例,由于文件本身不包含幀率信息,所以需要知道錄制時的幀率或者設置一個初始值,在發送數據的時候找出發送數據中的幀數目,根據幀率和預置值來計算時延,以適當的速度發送數據并設置時間戳信息。
(5)多種流同步
RTCP的一個關鍵作用就是能讓接收方同步多個RTP流,例如:當音頻與視頻一起傳輸的時候,由于編碼的不同,RTP使用兩個流分別進行傳輸,這樣兩個流的時間戳以不同的速率運行,接收方必須同步兩個流,以保證聲音與影像的一致。為能進行流同步,RTCP要求發送方給每個傳送一個唯一的標識數據源的規范名(Canonical Name),盡管由一個數據源發出的不同的流具有不同的同步源標識(SSRC),但具有相同的規范名,這樣接收方就知道哪些流是有關聯的。而發送方報告報文所包含的信息可被接收方用于協調兩個流中的時間戳值。發送方報告中含有一個以網絡時間協議NTP(Network Time Protocol)格式表示的絕對時間值,接著RTCP報告中給出一個RTP時間戳值,產生該值的時鐘就是產生RTP分組中的TimeStamp字段的那個時鐘。由于發送方發出的所有流和發送方報告都使用同一個絕對時鐘,接收方就可以比較來自同一數據源的兩個流的絕對時間,從而確定如何將一個流中的時間戳值映射為另一個流中的時間戳值。
基于C/S模式的流媒體傳輸系統模型采用最新的MPEG-4視頻編碼技術,該編碼效率要比MPEG-1提高了4倍左右,除去更精細的運動補償和基于上下文的熵編碼外,幀內預測,多參考幀的預測,環路濾波和率失真優化技術也極大地提高了該標準的性能。
參考文獻
[1]鐘玉琢,王琪,賀玉文.基于對象的多媒體數據壓縮編碼國際標準-MPEG4及其校驗模型[M].北京科學出版社,2000,10:433~435
[2]田毅柯,盧朝陽.MPEG4視頻標準及其算法[J].現代電子技術,2002,1:38~41
[3]RFC2038;RTPPayloadFormatforMPEG-4[S].
[4]李向陽,卞得森.流媒體及其應用技術[J].現代電視技術,2002,4:18~27
[5]精英科技.視頻壓縮與音頻編碼技術(第一版)[M].中國電力出版社,2001.