天天看點

基于RTSP/RTP協定的H.264傳輸

1.前言

流媒體由于具有啟動時延小、節省用戶端存儲空間等優勢,逐漸成為人們的首選,流媒體網絡應用也在全球範圍内得到不斷的發展。其中實時流傳輸協定 RTP 詳細說明了在網際網路上傳遞音頻和視訊的标準資料包格式,它與傳輸控制協定 RTCP 配合使用,成為流媒體技術最普遍采用的協定之一。 

H.264/AVC 是ITU-T 視訊編碼專家組(VCEG)和ISO/IEC 動态圖像專家組(MPEG )聯合組成的聯合視訊組(JVT)共同努力制訂的新一代視訊編碼标準,它最大的優勢是具有很高的資料壓縮比率,在同等圖像品質的條件下,H.264 的壓縮比是MPEG-2 的2 倍以上,是 MPEG-4的1.5~2 倍。同時,采用視訊編碼層(VCL)和網絡提取層(NAL )的分層設計,非常适用于流媒體技術進行實時傳輸。本文就是基于 RTP 協定,對 H.264 視訊進行流式打包傳輸,實作了一個基本的流媒體伺服器功能,同時利用開源播放器VLC 作為接收端,構成一個完整的H.264 視訊傳輸系統。

2.RTP協定關鍵參數的設定

RTP 協定實際上是由實時傳輸協定RTP(Real-time Transport Protocol)和實時傳輸控制協定RTCP(Real-time Transport Control Protocol)兩部分組成。RTP 協定基于多點傳播或單點傳播網絡為使用者提供連續媒體資料的實時傳輸服務;RTCP 協定是 RTP 協定的控制部分,用于實時監控資料傳輸品質,為系統提供擁塞控制和流控制。RTP 協定在RFC3550 中有詳細介紹。每一個 RTP 資料包都由固定標頭(Header )和載荷(Payload)兩個部分組成,其中標頭前12個位元組的含義是固定的,而載荷則可以是音頻或視訊資料。RTP 固定標頭的格式如圖1所示: 

基于RTSP/RTP協定的H.264傳輸

其中比較關鍵的參數設定解釋如下:

      (1)标示位(M ):1 位,該标示位的含義一般由具體的媒體應用架構(profile )定義, 目的在于标記處RTP 流中的重要事件。

      (2)載荷類型(PT):7 位,用來指出RTP負載的具體格式。在RFC3551中,對常用的音視訊格式的RTP 傳輸載荷類型做了預設的取值規定,例如,類型2 表明該RTP資料包中承載的是用ITU G.721 算法編碼的語音資料,采用頻率為 8000HZ,并且采用單聲道。

    (3)序号:16 位,每發送一個 RTP 資料包,序号加 1。接受者可以用它來檢測分組丢失和恢複分組順序。

    (4)時間戳:32 位,時間戳表示了 RTP 資料分組中第一個位元組的采樣時間,反映出各RTP 包相對于時間戳初始值的偏差。對于RTP 發送端而言,采樣時間必須來源于一個線性單調遞增的時鐘。

       從 RTP 資料包的格式不難看出,它包含了傳輸媒體的類型、格式、序列号、時間戳以及是否有附加資料等資訊。這些都為實時的流媒體傳輸提供了相應的基礎。而 傳輸控制協定RTCP為 RTP傳輸提供了擁塞控制和流控制,它的具體包結構和各字段的含義可參考RFC3550。