?
1流媒體協議
?????? 當前在Internet上傳輸音頻和視頻等信息主要有兩種方式:下載和流式傳輸。
下載情況下,用戶需要先下載整個媒體文件到本地,然后才能播放媒體文件。流式傳輸是指傳輸之前首先對多媒體進行預處理(降低質量和高效壓縮),然后使用緩存系統來保證數據連續正確地進行傳輸。使用流式傳輸可以邊下載邊觀看流媒體節目,可以實現網上直播、視頻會議等。
目前,支持流媒體傳輸的協議主要有:實時傳輸協議RTP、實時傳輸控制協議RTCP和實時流協議RTSP(Real-time Streaming Protocol) 等,此類協議在IP/TCP協議中的位置如圖1所示。
圖1流媒體協議在IP/TCP協議中的位置
2 RTP/RTCP協議
?????? RTP協議是IEIF提出的標準,對應的RFC文檔為RFC3550。如圖1所示,RTP 為實時應用提供端到端的數據運輸,但不提供任何服務質量的保證,服務質量由RTCP來提供。從應用開發者的角度看,RTP 應當是應用層的一部分。在應用的發送端,開發者必須編寫用 RTP 封裝分組的程序代碼,然后把 RTP 分組交給 UDP 插口接口。在接收端,RTP 分組通過 UDP 插口接口進入應用層后,還要利用開發者編寫的程序代碼從 RTP 分組中把應用數據塊提取出來。
?????? RTP的工作機制為:當應用程序建立一個RTP會話時,應用程序將確定一對目的傳輸地址。目的傳輸地址由一個網絡地址和一對端口組成,有兩個端口:一個給RTP包,一個給RTCP包,使得RTP/RTCP數據能夠正確發送。RTP數據發向偶數的UDP端口,而對應的控制信號RTCP數據發向相鄰的奇數UDP端口(偶數的UDP端口+1),這樣就構成一個UDP端口對。 RTP的發送過程如下,接收過程則相反。
?????? 1) RTP協議從上層接收流媒體信息碼流(如H.263),封裝成RTP數據包;RTCP從上層接收控制信息,封裝成RTCP控制包。
?????? 2) RTP將RTP 數據包發往UDP端口對中偶數端口;RTCP將RTCP控制包發往UDP端口對中的奇數端口。
?????? RTP分組只包含RTP數據,而控制是由RTCP協議提供。RTP在1025到65535之間選擇一個未使用的偶數UDP端口號,而在同一次會話中的RTCP則使用下一個奇數UDP端口號。端口號5004和5005分別用作RTP和RTCP的默認端口號。RTP分組的首部格式如圖2所示,其中前12個字節是必須的。
圖2RTP分組的首部格式
?????? RTCP 協議的主要功能是:服務質量的監視與反饋、媒體間的同步,以及多播組中成員的標識。RTCP 分組也使用 UDP 傳送,但 RTCP 并不對聲音或視像分組進行封裝。可將多個 RTCP 分組封裝在一個 UDP 用戶數據報中。RTCP 分組周期性地在網上傳送,它帶有發送端和接收端對服務質量的統計信息報告。
?????? RTCP包含五種分組類型
1)結束分組 BYE 表示關閉一個數據流。
2)特定應用分組 APP 使應用程序能夠定義新的分組類型。
3)接收端報告分組 RR 用來使接收端周期性地向所有的點用多播方式進行報告。
4)發送端報告分組 SR 用來使發送端周期性地向所有接收端用多播方式進行報告。
5)源點描述分組 SDES 給出會話中參加者的描述。
?