RTMP数据流格式

FLV是由一个FLV Header 和 若干tag(Video Tag, Audio Tag, Script Tag(也叫 Metadata Tag )三种,分别代表视频流,音频流和脚本流)组成的二进制文件。

FLV Header:
文件类型: 固定为 "FLV" (3 bytes) 版本信息: 一般为0x01 (1 byte) 流信息: 0x05 此flv文件包含视音频, 0x01 此flv文件包含视频 0x04 包含音频 (1 byte) 头长度: FLV文件头长度,一般为 3+1+1+4=9 bytes (4bytes)
FLV Body:
剩下的部分全部是FLV Body内容。FLV Body 由一系列pre tag length 和 tag组成,每个tag又分为tag heaer和tag data组成 一个一个的Tag构成,格式为:
Tag0的长度 | Tag1 | tag1的长度 | tag2 | tag2的长度 | ... | tagN | tagN的长度
+-----------------------------------------------------------------------+
| Pre Tag Length | Tag Header | Tag Data | .... | Pre Tag Length | ... |
+-----------------------------------------------------------------------+
Pre Tag Length:4字节
如上图,第一个 Pre Tag Length为0,因为上一个tag不存在
Tag:tag header + tag data
tag header:共11字节
+-----------------------------------------------------------------------+
| Tag Type(1 byte) | Tag Data Length(3 bytes) | Timestap(3 bytes) | TimestapExt(1 byte) |
+-----------------------------------------------------------------------+
| StreamID(3 bytes) | +--------------------+
Tag Type: Tag 类型 1 byte
    0x08 音频
    0x09 视频
    0x12 脚本
Tag Data Length: Tag Data 长度 3 bytes
Timestamp: 时间戳(单位ms) 3 bytes
TimestampExt: 扩展时间戳 1 byte
StreamID: 流ID 总是0 3 bytes

tag data(音频):1字节信息+数据 tag data如果是音频数据,第一个byte记录audio信息:前4bits表示音频格式(全部格式请看官方文档):
hex
comment
0
未压缩
1
ADPCM
2
MP3
4
Nellymoser 16-kHz mono
5
Nellymoser 8-kHz mono
10
AAC
下面两个bits表示samplerate:
hex
comment
0
5.5KHz
1
11kHz
2
22kHz
3
44kHz
下面1bit表示采样长度:
hex
comment
0
snd8Bit
1
snd16Bit
下面1bit表示类型:
hex
comment
0
sndMomo
1
sndStereo
之后是数据。
tag data(视频):1字节信息+数据
如果是视频数据,第一个byte记录video信息:
hex
comment
1
keyframe
2
inner frame
3
disposable inner frame (h.263 only)
4
generated keyframe
后4bits表示解码器ID:
hex
comment
2
seronson h.263
3
screen video
4
On2 VP6
5
On2 VP6 with alpha channel
6
Screen video version 2
7
AVC (h.264)
之后是数据
tag script(Metadata):略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值