版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88285830
The FLV header
1byte | 1byte | 1byte | 1byte | 5bits | 1bit | 1bit | 1bit | 4bytes |
---|---|---|---|---|---|---|---|---|
F | L | V | version | 保留位 | 是否有音频 | 保留位 | 是否有视频 | flv header的大小,通常是9字节 |
0x46 | 0x4c | 0x56 | 0x01 | 必须是0 | 0:无;1:有 | 必须是0 | 0:无;1:有 | 0x 00 00 00 09 |
举个例子:
46 4c 56 01 04 00 00 00 09,说明这个flv文件,只有音频
The FLV file body
4bytes | N bytes | 4bytes | N bytes | 4bytes | … | N bytes | 4bytes |
---|---|---|---|---|---|---|---|
preTagSize0 | tag1 | tag2 | tagN | ||||
0x 00 00 00 00,通常是0,前一个tag的字节大小,因为前面没有tag,所以是0字节 | tag1的字节大小 | tag2的字节大小 | tagN的字节大小 |
FLV tags
1byte | 3bytes | 3bytes | 1byte | 3bytes | N bytes |
---|---|---|---|---|---|
tag类型 | data长度 | 时间戳 | 时间戳扩展 | 流ID | 音频/视频/script数据对象 |
8:音频 9:视频 18:script数据对象 | 就是最后面的N bytes | 单位毫秒 | 如果前面的时间戳不够,这里表示高八位 | 通常是0,即0x 00 00 00 | 根据前面的“tag类型”决定 |
也就是说一个flv tag的长度是11+N字节
举个例子
这是script数据对象