rtp確定頭(rtp fixed header field)
通常情況下是12字節,如下圖
- 版本(V):2bits。當前版本是2。
- 填充(P):1bit。一般沒有填充,是0。
- 擴展位(X):1bit。如果有擴展,會在rtp頭之後,payload之前增加rtp擴展頭。
- CSRC count(CC):4bits。一般爲0。所以rtp固定頭一般是12字節。
- 上面是1byte
- 標誌位(M):1bit。The interpretation of the marker is defined by a profile.不太好翻譯,先用原文。在打包h264數據時,表示一個frame的結束。
- 負載類型(PT):7bits。範圍是96-127。
- 上面是1byte
- 序列號(sequence number):16bits。一般是從0開始,但是沒有強制要求。每發一個包,加一。
- 上面是2bytes
- 時間戳(timestamp):32bits。如果是視頻,就是視頻幀時間戳(單位秒)值乘以90000;如果是音頻,就是音頻幀時間戳(單位秒)乘以採樣率,比如48k、16k。
- 上面是4bytes
- 同步源(SSRC):32bits。是一個隨機值,用於區分每一路流。
rfc3550鏈接
https://tools.ietf.org/html/rfc3550#section-5.1
抓包舉例(marker位)
rtp擴展頭
當確定頭的擴展位是1的時候,就會有擴展頭。
- 擴展頭是跟在確定頭後的。
- 如果有CSRC,就跟在CSRC後。
rtp擴展頭格式
擴展頭長度 | 擴展頭內容 |
---|---|
16bits | 自定義 |
假設爲L(rfc文檔沒有定義) | 長度32bits*L(其中,L可以爲0) |
rfc3550鏈接
https://tools.ietf.org/html/rfc3550#section-5.3.1