http-flv协议源码实现(可通过网页播放视频)

FLV数据格式

视频帧:0x09

音频帧:0x08

script帧:0x12

FLV(Flash Video)是Adobe公司设计开发的一种流行的流媒体格式,由于其视频文件体积轻巧、封装简单等特点,使其很适合在互联网上进行应用。此外,FLV可以使用Flash Player进行播放,而Flash Player插件已经安装在全世界绝大部分浏览器上,这使得通过网页播放FLV视频十分容易。目前主流的视频网站无一例外地使用了FLV格式。FLV封装格式的文件后缀通常为“.flv”。

一、FLV结构

FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag组成。

 

其中,每个Tag前面还包含了Previous Tag Size字段,表示前面一个Tag的大小。

Tag的类型可以是视频、音频和Script,每个Tag只能包含以上三种类型的数据中的一种。

 下面详细介绍一下三种Tag的Tag Data部分的结构(不同类型tag,tag data不同)。

1.1 Audio Tag Data结构(音频Tag)

音频Tag开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据。

第1个字节的前4位的数值表示了音频编码类型。

 

如果SoundFormat=10,那么音频数据就是AACAUDIODATA。

1.2 Video Tag Data结构(视频Tag)

视频Tag也用开始的第1个字节包含视频数据的参数信息,从第2个字节为视频流数据。

对于H.264数据来说,CodecID = 7,视频数据就是AVCVIDEOPACKET格式。

  • 如果 AVCPacketType = 0,那么Data就是AVCDecoderConfigurationRecord格式。

  • 如果 AVCPacketType = 1,那么Data结构就简单了。

Nalu len(UI32) | Nalu Data(UI8[n]) | Nalu len(UI32) | Nalu Data(UI8[n]) | ......

  • CompostionTime = (pts - dts)/90,单位ms,Flv Tag Header有个TimeStamp,单位ms(dts=TimeStamp *90 ,单位1/90*1000秒)。

示例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠哉无忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值