webrtc RTP 數(shù)據(jù)傳輸協(xié)議

webrtc版本m79

RTP header rfc3550

//  0                   1                   2                   3
//  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |V=2|P|X|  CC   |M|     PT      |       sequence number         |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |                           timestamp                           |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |           synchronization source (SSRC) identifier            |
// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// |            Contributing source (CSRC) identifiers             |
// |                             ....                              |
// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// |  header eXtension profile id  |       length in 32bits        |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |                          Extensions                           |
// |                             ....                              |
// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// |                           Payload                             |
// |             ....              :  padding...                   |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |               padding         | Padding size  |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

struct rtpHeader
{
  uint8_t version : 2;
  uint8_t padding : 1;
  uint8_t extension : 1;
  uint8_t csrcCount : 4;
  uint8_t marker : 1;
  uint8_t payloadType : 7;
  uint16_t sequenceNumber;
  
  uint32_t timestamp;
  uint32_t ssrc;

/* 變長熟丸,根據(jù)csrcCount決定csrc個數(shù) */
  uint32_t csrc[csrcCount];
};


  • version: 版本號2。
  • padding: 置為1表示RTP數(shù)據(jù)有填充鸥印。數(shù)據(jù)的最后一個字節(jié)表示填充了幾個字節(jié)逃片,包含這個字節(jié)本身
  • extension: 擴展標(biāo)志绪妹,置為1則在RTP有RTP header extension
  • csrcCount: csrc的個數(shù)
  • marker: 標(biāo)記。對于視頻乡洼,標(biāo)記一幀的結(jié)束智袭;對于音頻变抽,標(biāo)記會話的開始础拨。
  • payloadType: payload type,在sdp中描述
  • sequenceNumber: 序列號的初始值是隨機的绍载,同時音頻包和視頻包的sequence是分別記數(shù)的诡宗,每次遞增1』骼埽可以用來檢查丟包塔沃;網(wǎng)絡(luò)抖動用來排序。
  • timestamp: 時間戳阳谍,同一幀的時間戳是一樣的
  • ssrc:sdp中的ssrc一致
  • csrc: 用音頻來說:ssrc1蛀柴、ssrc2、ssrc3經(jīng)過混音后矫夯,ssrc填充的是混音器的ssrc鸽疾,而csrc填充的分別是ssrc1、ssrc2训貌、ssrc3

RTP header extension rfc3550

    /* RTP header extension, RFC 3550.
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      defined by profile       |           length              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        header extension                       |
    |                             ....                              |
    */
    
struct HeaderExtension
{
  uint16_t id;
  uint16_t length; // Size of value in multiples of 4 bytes.
};

/* Struct for One-Byte extension. */
struct OneByteExtension
{
  uint8_t id : 4;
  uint8_t len : 4;
  uint8_t value[len];
};

/* Struct for Two-Bytes extension. */
struct TwoBytesExtension
{
  uint8_t id : 8;
  uint8_t len : 8;
  uint8_t value[len];
};
  • HeaderExtension.id: profile id制肮。當(dāng)HeaderExtension.id==0xBEDE擴展頭長度為1個字節(jié),即結(jié)構(gòu)體類型為OneByteExtension递沪;否則(HeaderExtension.id & 0xfff0)==0x1000擴展頭長度為2個字節(jié)豺鼻,即結(jié)構(gòu)體類型為TwoBytesExtension
  • HeaderExtension.length: HeaderExtension.length*4擴展頭長度区拳,不包含HeaderExtension.idHeaderExtension.length
  • OneByteExtension.id: 消息id拘领,在sdp中描述
  • OneByteExtension.len: OneByteExtension.value的長度
  • OneByteExtension.value:
  • TwoBytesExtension:OneByteExtension意思一致

rtx rfc4588

/*
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         RTP Header                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            OSN                |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                  Original RTP Packet Payload                  |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
  • payloadType: payload type意乓,在sdp中描述
  • sequenceNumber: 每次遞增1樱调。可以用來檢查丟包届良;網(wǎng)絡(luò)抖動用來排序笆凌。
  • ssrc:sdp中的ssrc一致
  • OSN: original sequence number,原始序列號
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末士葫,一起剝皮案震驚了整個濱河市乞而,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慢显,老刑警劉巖爪模,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欠啤,死亡現(xiàn)場離奇詭異,居然都是意外死亡屋灌,警方通過查閱死者的電腦和手機洁段,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來共郭,“玉大人祠丝,你說我怎么就攤上這事〕冢” “怎么了写半?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尉咕。 經(jīng)常有香客問我叠蝇,道長,這世上最難降的妖魔是什么龙考? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任蟆肆,我火速辦了婚禮,結(jié)果婚禮上晦款,老公的妹妹穿的比我還像新娘炎功。我一直安慰自己,他們只是感情好缓溅,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布蛇损。 她就那樣靜靜地躺著,像睡著了一般坛怪。 火紅的嫁衣襯著肌膚如雪淤齐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天袜匿,我揣著相機與錄音更啄,去河邊找鬼。 笑死居灯,一個胖子當(dāng)著我的面吹牛祭务,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怪嫌,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼义锥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岩灭?” 一聲冷哼從身側(cè)響起拌倍,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后柱恤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體数初,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年梗顺,在試婚紗的時候發(fā)現(xiàn)自己被綠了妙真。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荚守,死狀恐怖珍德,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矗漾,我是刑警寧澤锈候,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站敞贡,受9級特大地震影響泵琳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜誊役,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一获列、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛔垢,春花似錦击孩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至艺玲,卻和暖如春括蝠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饭聚。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工忌警, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秒梳。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓法绵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親端幼。 傳聞我的和親對象是個殘疾皇子礼烈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容