Field
|
type
|
Comment
|
簽名
|
UI8
|
’F’(0X46)
|
簽名
|
UI8
|
‘L’(0X4C)
|
簽名
|
UI8
|
‘V’(0x56)
|
版本
|
UI8
|
FLV的版本。0x01表示FLV 版本是1
|
保留字段
|
UB5
|
前五位必須是0
|
是否有音頻流
|
UB1
|
音頻流是否存在標誌
|
保留字段
|
UB1
|
必須是0
|
是否有視頻流
|
UB1
|
視頻流是否存在標誌
|
文件頭大小
|
UI32
|
FLV版本1時填寫9,代表的是FLV頭的大小,爲後期的FLV版本擴展使用。包括這四個字節。
數據的起始位置就是從文件開頭偏移這麼多的大小。
|
Field
|
type
|
Comment
|
TAG類型 |
UI8
|
8: audio
9: video
18: script data——這裏是一些描述信息。
all others: reserved其餘全部值未使用。
|
數據大小
|
UI24
|
數據區的大小,不包括包頭。包頭總大小是11個字節。
|
時戳
|
UI24
|
當前幀時戳,單位是毫秒。相對於FLV文件的第一個TAG時戳。第一個tag的時戳老是0。——不是時戳增量,rtmp中是時戳增量。
|
時戳擴展字段
|
UI8
|
若是時戳大於0xFFFFFF,將會使用這個字節。這個字節是時戳的高8位,上面的三個字節是低24位。
|
流ID
|
U24
|
老是0
|
數據區
|
UI8[n]
|
|
Field
|
type
|
Comment
|
音頻格式
|
UB4
|
0 = Linear PCM, platform endian
1 = ADPCM 2 = MP3 3 = Linear PCM, little endian 4 = Nellymoser 16-kHz mono 5 = Nellymoser 8-kHz mono 6 = Nellymoser
7 = G.711 A-law logarithmic PCM
8 = G.711 mu-law logarithmic PCM 9 = reserved
10 = AAC
11 = Speex
14 = MP3 8-Khz
15 = Device-specific sound
7, 8, 14, and 15:內部保留使用。
flv是不支持g711a的,若是要用,可能要用線性音頻。
|
採樣率
|
UB2
|
For AAC: always 3
0 = 5.5-kHz
1 = 11-kHz
2 = 22-kHz
3 = 44-kHz
|
採樣大小
|
UB1
|
0 = snd8Bit
1 = snd16Bit
|
聲道
|
UB1
|
0=單聲道
1=立體聲,雙聲道。AAC永遠是1
|
聲音數據
|
UI8[N] |
若是是PCM線性數據,存儲的時候每一個16bit小端存儲,有符號。
若是音頻格式是AAC,則存儲的數據是AAC AUDIO DATA,不然爲線性數組。
|
Field
|
type
|
Comment
|
幀類型
|
UB4
|
1: keyframe (for AVC, a seekable frame)——h264的IDR,關鍵幀,可重入幀。
2: inter frame (for AVC, a non- seekable frame)——h264的普通幀
3: disposable inter frame (H.263 only)
4: generated keyframe (reserved for server use only)
5: video info/command frame
|
編碼ID
|
UB4
|
使用哪一種編碼類型:
1: JPEG (currently unused) 2: Sorenson H.263
3: Screen video
4: On2 VP6
5: On2 VP6 with alpha channel 6: Screen video version 2
7: AVC
|
視頻數據
|
UI[N]
|
若是是avc,則參考下面的介紹:
AVCVIDEOPACKET
|
Field
|
type
|
Comment
|
AVC packet類型
|
UI8
|
0:AVC序列頭
1:AVC NALU單元
2:AVC序列結束。低級別avc不須要。
|
CTS
|
SI24
|
若是AVC packet類型是1,則爲cts偏移(見下面的解釋),爲0則爲0
|
數據
|
UI8[n]
|
若是AVC packet類型是0,則是解碼器配置,sps,pps。
若是是1,則是nalu單元,能夠是多個,具體格式:將下面
|
Field
|
type
|
Comment
|
長度
|
UI32
|
nalu單元的長度,不包括長度字段。
|
nalu數據
|
UI8[N]
|
NALU數據,沒有四個字節的nalu單元頭,直接從h264頭開始,好比:65 ** ** **,41 ** ** **
|
長度
|
UI32
|
nalu單元的長度,不包括長度字段。
|
nalu數據
|
UI8[N]
|
NALU數據,沒有四個字節的nalu單元頭,直接從h264頭開始,好比:65 ** ** **,41 ** ** **
|
...
|
...
|
...
|
我 的微信公衆號數組