从二进制分析flv数据流

转载连接: http://blog.youkuaiyun.com/u011046042/article/details/60783123


利用utralEdit打开flv的文件可以看到如下:


以头信息为例进行分析如下:


这个是对flv格式的视频数据进行分析的一个总结。

一、File Header结构
  File Header在当前版本中总是由9个字节组成,如图中蓝色区域所示。
  第1-3字节为文件标识(Signature),总为“FLV”(0x46 0x4C 0x56),如图中紫色区域。
  第4字节为版本,目前为1(0x01)。
  第5个字节的前5位保留,必须为0。
  第5个字节的第6位表示是否存在音频Tag。
  第5个字节的第7位保留,必须为0。
  第5个字节的第8位表示是否存在视频Tag。
  第6-9个字节为UI32类型的值,表示从File Header开始到File Body开始的字节数,版本1中总为9。

Tag结构

  Tag包括Tag Header和Tag Data两部分。不同类型的Tag的Header结构是相同的,但是Data结构各不相同。如图中绿色和黄色区域分别表示Tag Header数据和Tag Data数据。

  当前版本的Tag Header结构占用11个字节。

  第1个字节表示Tag类型,包括音频(0x08)、视频(0x09)和script data(0x12),其他类型值被保留。

  第2-4字节为UI24类型的值,表示该Tag Data部分的大小。

  第5-7字节为UI24类型的值,表示该Tag的时间戳(单位为ms),第一个Tag的时间戳总是0。

  第8个字节为时间戳的扩展字节,当24位数值不够时,该字节作为最高位将时间戳扩展为32位值。

  第9-11字节为UI24类型的值,表示stream id,总是0。

  后面的字节为Tag Data数据,Data的大小由第2-4字节的数值指示,根据第1个字节指示的Tag类型,按照不同的结构解析Tag Data。下面分别介绍。

原本的格式如下


从下图更形象的看出tag和body的结构


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值