FLV格式

FLV

文件格式

FLV headerPre Tags Size 0Flv Tag 1Pre Tag size 1FLV Tag 2FLV Tag n
  • tag1是metadata,记录视频的一些信息
  • tag2是视频配置信息(AVC decoder configuration record),video tag
  • tag3是音频配置信息(如果没有音频则去掉此项)
  • tag4以及之后的tag就是音视频数据了。

Flv header

‘F’‘L’‘V’版本号(0x01)流信息FLV头长度(4bytes)
媒体信息
  • 倒数第一bit是1表示有视频(0x01)
  • 倒数第三bit是1表示有音频(0x4)
  • 有视频又有音频就是0x01 | 0x04(0x05)
  • 其他都应该是0。

FLV Body

整体结构
Pre Tag Size(4字节)Tag headerTag data
Tag结构
Tag headerTag Data
Tag header结构
名称长度介绍
Tag type1bytes8:音频
9:视频
18:脚本
数据区长度3bytes数据区长度
时间戳3bytes整数,单位是毫秒。对于脚本型的tag总是0
其中script(脚本)、video(视频)、audio(音频)的第一个tag的时间戳值都为0
时间戳占4个字节 其中第四个字节是高位 前三个字节是低位(每个tag的5~8字节)
时间戳扩展1bytes将时间戳扩展为4bytes,代表高8位。很少用到
StreamsID3bytes总是0
数据区(data)由数据区长度决定数据实体
Tag data结构
视频Tag
video tag headervideo data
video Tag header
名称长度介绍
帧类型4bit1: keyframe (for AVC, a seekable frame)
2: inter frame (for AVC, a non-seekable frame)
3: disposable inter frame (H.263 only)
4: generated keyframe (reserved for server use only)
5: video info/command frame
codec id4bit1: 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

IF CodecID == 7

AVCPacketType8bit0 = AVC sequence header
1 = AVC NALU
2 = AVC end of sequence (lower level NALU sequence ender is not required or supported)
CompositionTime3bytes每个视频tag的第14~16字节(表示PTS相对于DTS的偏移值 )
CompositionTime 单位为ms 显示时间 = 解码时间(tag的第5~8字节) + CompositionTime
对于摄像头来讲,dts=pts,此值传0即可
sps nalu size4
sps nalu datan
pps nalu size4
pps datan
sei nalu size4
sei datan
inter frame nalu size4
inter frame datan
  • flv里面的h264是avcc封装
Tag 分类
  • Audio Tag
  • Video Tag
  • Script Tag(Metadata,元数据),通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。

AVCDecoderConfigurationRecord

字段长度(byte)说明
configurationVersion10x01
AVCProfileIndication1
profile_compatibility1
AVCLevelIndication1
lengthSizeMinusOne1avcc nalu的size字段的长度,0xff
sps nums10xE1
sps data length2
sps datan
pps nums10x01
pps data length2
sps datan
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值