FLV文件格式
FLV全称Flash Video, VSCode可以下载一个插件hexdump for VSCode
用来查看视频的16进制内容.
FLV文件的前3个字节为46 4C 56
, 也就是字符F L V
, FLV文件 = FLV头文件
+ tag1
+ tag1内容1
+ tag2
+ tag2内容2
+ … + tagN
+ tagN内容N
FLV头文件
- 1-3: 前3个字节是文件格式标识(
FLV
, 0x46 0x4C 0x56) - 4-4: 第4个字节是版本
0x01
- 5-5: 第5个字节的前5位是保留的必须是0, 第6位是音频类型标志位, 第7位也是保留的必须是0, 第8位是视频类型标志位
- 6-9: 第6个字节到第9个字节也是保留的。数据为:
00 00 00 09
整个文件头长度一般是9 (3 + 1 + 1 + 4)
Tag基本格式
tag类型信息, 固定长度为15字节
- 1-4: 前一个tag长度(4字节), 第一个tag就是0
- 5-5: tag类型, 0x8 音频, 0x9 视频, 0x12 脚本数据
- 6-8: tag内容大小(3个字节)
- 9-11: 时间戳(3个字节, 毫秒), 第一个tag的时候总是为0, 如果是脚本就是0
- 12-12: 时间戳拓展, 可以让时间戳变成4个字节, (以存储更长时间的flv时间信息),本字节作为时间戳的最高位。
在flv回放过程中,播放顺序是按照tag的时间戳顺序播放。任何加入到文件中时间设置数据格式都将被忽略 - 13-15: streamID (3个字节), 总是0
Video Tag Content格式
第一个字节高4位表示是否为关键帧, 低4位表示codec的版本, H.264的值是7(0111)
{
keyframe_type // (4 bit)
codec version // (4 bit)
// H264 only
package type // (1 byte)
composition time // (3 bytes)
sps_pps_data // 第一个video tag发送
frame_data // 视频帧数据
}
- 本文链接: https://ourfor.top/article/video-format-flv/
- 版权声明: 本博客所有文章除特别声明外,均采用 ©BY-NC-SA 许可协议。转载请注明出处!