rtmp協議解析

2021-10-16 08:59:43 字數 2476 閱讀 9561

在介紹主要內容之前,先介紹一下當前各協議的應用場景

rtmp:一般用作直播,允許丟包

rtsp:一般用作安防,不允許丟包

hls:即http live stream,蘋果公司封裝的基於http協議的直播協議

直播:根據其對實時性要求高,如中途進入直播間的觀眾,要盡快出現i幀讓使用者能看到影象,不能讓觀眾等待太久,而丟失部分幀並不影響**效果。可以減少i幀間隔,即gop間距盡量小,同時減小位元速率

下面開始正式內容,介紹rtmp協議資料傳輸格式:

對http協議有了解的大概都知道,http協議無論是get、post、put、delate方式,只是通過設定資料的不同位置和不同格式產生不同的請求效果

rtmp如是,其他任何一種協議也如是,都是設定了一套資料傳輸格式,並給他起名,作為一種資料傳輸標準

sps資料正常情況下為0x67

pps資料正常情況下為0x68

i幀資料正常情況下為0x65

取後5位,即:

sps型別: 0x67 & 0x1f = 7

pps型別: 0x68 & 0x1f = 8

i幀型別: 0x65 & 0x1f = 5

分離h264中的各型別幀的資料,只需根據型別進行切割即可,本章不做介紹。

為了方便解說,我列了乙個表

位元組索引01

234...

sps pps

0x17

0x00

0x00

0x00

0x00

...關鍵幀(i幀)

0x17

0x01

0x00

0x00

0x00

...非關鍵幀(p/b幀)

0x27

0x00

0x00

0x00

0x00

...可以看到,前5個位元組中,sps pps資料第乙個位元組和i幀第乙個位元組是相同,不同之處在於第二個位元組,i幀使用0x01,sps pps 使用0x00, p/b幀則第一位元組使用0x27

下面分別從第5位索引開始介紹各幀型別的資料格式

sps pps幀:

位元組索引

占用位元組

資料含義51

0x01

版本號6

1sps[1]

即0x67後面一位的位元組71

sps[2]

即0x67後面第二位的位元組81

sps[3]

即0x67後面第三位的位元組91

0xff

恆定值10

10xe1

sps個數(即0xe1 & 0x1f = 1)恆定值111

(spslen >> 8) & 0xff

sps長度,使用兩個位元組儲存121

len & 0xff

13...13+spslen-1

spslen

sps內容

sps內容

13+spslen

10x01

pps個數

13+spslen+1

1(ppslen >> 8) & 0xff

pps長度,使用兩個位元組儲存

13+spslen+2

1ppslen  & 0xff

13+spslen+3...13+spslen+3+ppslen-1

ppslen

pps內容

pps內容

i/p/b幀:

位元組索引

占用位元組

資料含義51

(framelen >> 24) & 0xff

幀資料長度,使用4個自己儲存61

(framelen >> 16) & 0xff71

(framelen >>8) & 0xff81

framelen & 0xff

9...9+framelen-1

1frame資料內容

幀資料內容

以上**中,spslen為sps去除00 00 00 01後的資料長度,ppslen為pps去除00 00 00 01後的資料長度,framelen為i/p/b幀去除00 00 00 01後的資料長度。

二、音訊資料:

音訊資料相對簡單,不過需要分為兩步

第二步:音訊資料

同樣,列表說明

資料索引

占用位元組資料0

10xaf11

0x0021

0x1231

0x08

傳送音訊資料:

資料索引

占用位元組資料0

10xaf11

0x01

2...2+audiolen-1

audiolen

音訊資料內容

以上**中,audiolen為音訊取樣資料長度。

以上內容即為rtmp協議資料解析全部內容,本章內容結束。

RTMP協議概述

rtmp協議概述 介紹 rtmp協議就像乙個用來裝資料報的容器,這些資料可以是amf格式的資料,也可以是flv中的視 音訊資料.乙個單一的連線可以通過不同的通道傳輸多路網路流.這些通道中的包都是按照固定大小的包傳輸的.網路連線 connection copy to clipboard code va...

RTMP協議分析

rtmp協議封包 由乙個包頭和乙個包體組成,包頭可以是4種長度的任意一種 12,8,4,1 byte s 完整的rtmp包頭應該是12bytes,包含了時間戳,amfsize,amftype,streamid資訊,8位元組的包頭只紀錄了時間戳,amfsize,amftype,其他位元組的包頭紀錄資訊...

rtmp 協議詳解

rtmp協議是乙個網際網路tcp ip五層體系結構中應用層的協議。rtmp協議中基本的資料單元稱為訊息 message 當rtmp協議在網際網路中傳輸資料的時候,訊息會被拆分成更小的單元,稱為訊息塊 chunk 1 訊息 2 訊息塊 在網路上傳輸資料時,訊息需要被拆分成較小的資料塊,才適合在相應的網...