音视频封装:FLV格式详解和打包H264、AAC方案(下)

Video Tag 视频Tag: 该Tag类型封装真实的视频裸数据,虽然支持H263、H264等编码 类型的视频,但是现在主流还是H264,所以下面会重点分析如何将 H264视频帧打进Flv方法。 Flv Parse 解析的结果如下:

previous tag1: 十六机制:0x00 00 01 37 十进制:311 因表示了前一个Metadata Tag的长度是311字节,这跟上篇分析结果是一致的; 

Videoag theader:

十六进制:0x09 00 00 2C 00 00 00 00 00 00 00 Tagtype: 十六进制:0x09

二进制:0000 1001 通过前1-2bit即知道非加密,后面4-8bit10010即十进制为9则为Video Tag类型; DataSize: 十六进制:0x 00 00 2C 十进制:44 说明这个Video Tag的data字段长度为44字节; Timestamp: 十六进制:0x 00 00 00 由于是第一个Video Tag该字段一般就是默认为0; TimeStampExtended: 十六进制:0x 00 00 00 时间戳扩展字段也是默认为0; Stream ID: 十六进制:0x 00 00 00 无论那种类型的Tag,一般默认为0; Video Tag Data: 视频头: 在Video tag的Header后面按道理就是视频裸数据了,但是这里我们需要分析下第 一个字节,判断视频数据的编码格式等信息,然后才知道视频裸数据是怎么打包进 Video Tag的Data字段的,第一个Video Tag的Data部分如图所示: 视频头字段格式:

待分析数据第一字节: 十六进制:0x17 我们先分析Video Tag数据部分的第一个字节即视频头 Frame type: 十六进制:0x17 二进制:0001 0111 十进制:1 通过前面1-4bit位发现十进制为1,即认为是key frame; CodeID: 十六进制:0x17 二进制:0001 0111 十进制:7 说明这个Video的编码格式AVC也就是常说的H264; 特别注意: 分析到这里,我们发现这个Video Tag的承载数据是AVC即H264编码格式的数 据,一般情况下Flv承载的数据格式都是这种。那么就需要继续向下面分析后面的 Packet Type字段。 Packet Typ数据格式:

 

对各个字段解释: CTS:这个字段需要结合PTS和DTS一块来理解,至于还不知道PTS和DT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值