| www.sharp-i.com.cn |
|
|||||||
|
![]() |
|||
|
|
RTP/RTCP流媒體服務器技術研究時間:2008-09-25 編輯:2
2.1 現在網上傳輸視頻、音頻主要有下載(Download)和流式傳輸(Streaming)兩種方式。流式傳輸是連續傳送視/音頻信號,當流媒體在客戶機播放時其餘部分在後台繼續下載。流式傳輸有順序流式傳輸(Progressive 2.2 流媒體是由各種不同軟件構成的,這些軟件在各個不同層面上互相通信,基本的流媒體系統包含以下3個組件: 播放器(Player),用來播放流媒體的軟件。 服務器(Server),用來向用戶發送流媒體的軟件。 編碼器(Encode),用來將原始的音頻視頻轉化為流媒體格式的軟件。 這些組件之間通過特定的協議互相通信,按照特定的格式互相交換文件數據。有些文件中包含了由特定編解碼器解碼的數據,這種編解碼器通過特定算法壓縮文件的數據量。 3 3.1 (1)響應客戶的請求,把媒體數據傳送給客戶。流媒體服務器在流媒體傳送期間必須與客戶的播放器保持雙向通信(這種通信是必需的,因為客戶可能隨時暫停或快放一個文件)。 (2)響應廣播的同時能夠及時處理新接收的實時廣播數據,並將其編碼。 (3)可提供其他額外功能,如:數字權限管理(DRM),插播廣告,分割或鏡像其他服務器的流,還有組播。 3.2 (1)單播。在客戶端與媒體服務器之間建立一個單獨的數據通道,從1台服務器送出的每個數據包只能傳送給1個客戶機。 (2)組播。在以組播技術構建的網絡上,允許路由器一次將數據包複制到多個通道上。 (3)點播與廣播。點播連接是客戶端與服務器之間的主動的連接,在點播連接中,用戶通過選擇內容項目來初始化客戶端連接,用戶可以開始、停止、後退、快進或暫停流。廣播指的是用戶被動地接收流,在廣播過程中,數據包的單獨一個拷貝將發送給網絡上的所有用戶,客戶端接收流,但不能控制流。 4 4.1 實時傳輸協議RTP(Realtime 實時傳輸控制協議RTCP(Realtime RTCP主要有4個功能: (1)用反饋信息的方法來提供分配數據的傳送質量,這種反饋可以用來進行流量的擁塞控制,也可以用來監視網絡和用來診斷網絡中的問題; (2)為RTP源提供一個永久性的CNAME(規範性名字)的傳送層標志,因為在發現沖突或者程序更新重啟時SSRC(同步源標識)會變,需要一個運作痕跡,在一組相關的會話中接收方也要用CNAME來從一個指定的與會者得到相聯系的數據流(如音頻和視頻); (3)根據與會者的數量來調整RTCP包的發送率; (4)傳送會話控制信息,如可在用戶接口顯示與會者的標識,這是可選功能。 4.2 工作時,RTP協議從上層接收流媒體信息碼流(如H.263),裝配成RTP數據包發送給下層,下層協議提供RTP和RTCP的分流。如在UDP中,RTP使用一個偶數號端口,則相應的RTCP使用其後的奇數號端口。RTP數據包沒有長度限制,它的最大包長只受下層協議的限制。 4.3 服務器軟件模型主要有兩種,即並發服務器和循環服務器。循環服務器(Iterative 由於流媒體服務時間的不定性和數據交互實時性的請求,流媒體服務器一般采用並發服務器算法。本文構建了一個基本的流媒體服務器,能夠同時響應多個用戶的請求,把本地硬盤流媒體文件或實時數據流(H.263格式)發送給用戶。在應用中,把客戶分為請求實時數據的實時客戶和請求文件數據的文件客戶兩類。主要算法為: (1)打開設備,分配資源。當設備准備好時,創建一個RTP實時服務線程和一個RTCP實時服務線程。 (2)創建一個UDP套接字並將其綁定到所提供服務的地址之上。 (3)反複調用接收模塊,接收來自客戶的RTCP報告,根據其類型做出響應。對新實時客戶的請求,把客戶地址添加到實時服務的客戶列表中,對新文件客戶的請求,則創建一個新RTP文件服務線程和一個新RTCP文件服務線程;對已經在服務中的客戶則根據RTCP報告的內容調整服務。 RTP實時服務線程1:初始化客戶列表和RTP首部。 RTP實時服務線程2:從設備讀取媒體數據,把數據發送給實時服務列表中的客戶。 RTP實時服務線程3:更新RTP首部和統計數據。 RTP實時服務線程4:計算延時,重複第二步。 RTCP實時服務線程1:初始化RTCP首部。 RTCP實時服務線程2:發送發送方報告給實時服務列表中的客戶。 RTCP實時服務線程3:計算延時,重複第二步。 RTP文件服務線程1:初始化RTP首部。 RTP文件服務線程2.:從文件讀取媒體數據,把數據發送給客戶。 RTP文件服務線程3:更新已發送數據的統計信息,為生成發送方報告做准備。 RTP文件服務線程4:計算延時,調整發送速度,正常情況下開始重複第二步。 RTCP文件服務線程1:初始化RTCP首部,發送一個源描述(SDES)報文給客戶。 RTCP文件服務線程2:根據已發送數據的統計信息生成發送方報告,發送給客戶。 RTCP文件服務線程3:計算延時,正常情況下開始重複第一步。 5 5.1 一個RTP會話(Session)包括傳給某個指定目的地對(Destination 5.2 並發服務器模式要求用多線程來提供服務,所以多線程的管理十分重要。在本文構建的服務器中,不同客戶的請求和反饋都由服務器的主線程處理,由於實時數據的獨有性,不同實時客戶可以共用一個RTP實時服務線程和一個RTCP實時服務線程,這樣可以大大減小服務器的負擔,而每個文件客戶由於請求的文件不同,相應地對速度和開始時間的要求都可能不同,所以需要有自己獨有的RTP文件服務線程和RTCP文件服務線程。 RTP服務線程負責把實時數據流發送給客戶,RTCP服務線程根據RTP線程的統計數據,產生發送方報告給客戶。RTP線程和RTCP線程之間通過一段共享內存交互統計數據,對共享內存必須設置互斥體進行保護,防止出現錯誤讀寫。在這種方式下,服務器可以根據每個用戶的不同請求和具體情況方便地提供不同的服務。 5.3 時間戳字段是RTP首部中說明數據包時間的同步信息,是數據能以正確的時間順序恢複的關鍵。時間戳的值給出了分組中數據的第一個字節的采樣時間(Sampling RTP規定一次會話的初始時間戳必須隨機選擇,但協議沒有規定時間戳的單位,也沒有規定該值的精確解釋,而是由負載類型來確定時鐘的顆粒,這樣各種應用類型可以根據需要選擇合適的輸出計時精度。 在RTP傳輸音頻數據時,一般選定邏輯時間戳速率與采樣速率相同,但是在傳輸視頻數據時,必須使時間戳速率大於每幀的一個滴答。如果數據是在同一時刻采樣的,協議標准還允許多個分組具有相同的時間戳值。 5.4 由於RTP協議沒有規定RTP分組的長度和發送數據的速度,因而需要根據具體情況調整服務器端發送媒體數據的速度。對來自設備的實時數據可以采取等時間間隔訪問設備緩沖區,在有新數據輸入時發送數據的方式,時間戳的設置相對容易。對已經錄制好的本地硬盤上的媒體文件,以H.263格式的文件為例,由於文件本身不包含幀率信息,所以需要知道錄制時的幀率或者設置一個初始值,在發送數據的時候找出發送數據中的幀數目,根據幀率和預置值來計算時延,以適當的速度發送數據並設置時間戳信息。 5.5 RTCP的一個關鍵作用就是能讓接收方同步多個RTP流,例如:當音頻與視頻一起傳輸的時候,由於編碼的不同,RTP使用兩個流分別進行傳輸,這樣兩個流的時間戳以不同的速率運行,接收方必須同步兩個流,以保證聲音與影像的一致。為能進行流同步,RTCP要求發送方給每個傳送一個唯一的標識數據源的規範名(Canonical 6 流媒體技術的應用日益廣泛,對流媒體技術的研究具有很大的實際意義,本文通過對RTP/RTCP協議的研究,分析流媒體服務器的一般功能和結構,給出構建一個基本的流媒體服務器的實現方案,實驗證明可以同時滿足多個實時和文件客戶的要求,並已經應用於一個遠程監控系統中。 |
||||
![]() |
廣州銳目數碼科技有限公司 版權所有 @ 2006~2008 |