1. 程式人生 > >封裝格式---FLV---數據分析

封裝格式---FLV---數據分析

封裝 版本 rev https col wid tag [1] 技術

轉自:https://blog.csdn.net/mm792261167/article/details/69396493

第一幀報文:

技術分享圖片

1) 0x46 4c 56字符FLV頭,固定字符

2) 0x01:版本,目前為固定字符

3)0x05:01表示有視頻,04表示有音頻,05表示既有視頻又有音頻。

4)0x00 00 00 09:flv包頭長度

5)0x00 00 00 00 :這個是第1幀的PreviousTagSize0(前幀長度),因為是第一幀,所以肯定是0;

6)0x08:幀開頭第一字節:0x08表示音頻,0x09表示視頻,0x12表示腳本信息,放一些關於FLV視頻和音頻的參數信息,如duration、width、height等。

7)0x00 00 04:幀payload長度:因為音頻第一幀是ASC

,所以只有4字節。

8) 0x 00 00 00 00:timestamp,時間戳

9) 0x 00 00 00:streamid,流ID

10) 0x AF 00 13 90:

音頻payload: 0xaf00開頭的後面是asc flag, 0xaf01開頭的後面是真正的音頻數據

0x13 90,也就是0b0001 0011 1001 0000,

ASC flag格式:xxxx xyyy yzzz z000

x字符: aac type,類型2表示AAC-LC,5是SBR, 29是ps,5和29比較特殊asc flag的長度會變成4;

y字符: sample rate, 采樣率, 7表示22050采樣率

z字符: 通道數,2是雙通道

11) 0x 00 00 00 0F

這個還是PreviousTagSize1,上一幀長度15bytes

12) 0x09 視頻類型,新的一幀

13)0x00 00 22

視頻幀payload長度

14) 0x00 00 0a 00

時間戳:這個地方有個大坑,順序是:a[3] a[0] a[1] a[2],最後一位是最高位。

15) 0x00 00 00

streamid, 流id。

16) 0x 17 00

視頻幀開頭2字節:

0x17 00: 表示內容是SPS和PPS

0x17 01: 表示內容是I-FRAME

0x27: 表示內容是P-FRAME

17)

0000002bh: 17 00 00 00 00 01 42 C0 1F FF E1 00 0E 67 42 C0 ; ......B??.gB?
0000003bh: 1F 8C 8D 40 F0 28 90 0F 08 84 6A 01 00 04

68 CE ; .實@??.刯...h?
0000004bh: 3C 80 ; <€

第12, 13字節: 0x00 0E是spslen,也就是14字節長度

跳過14字節後,0x01是pps開始的標識,跳過它。

0x00 04是ppslen,也就是4個字節,最後0x68 ce 3c 80就是pps。

封裝格式---FLV---數據分析