音视频探索(7):FLV协议在RTMP中的使用

FLV是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。RTMPHTTP_FLV内部使用FLV协议封装H.264AAC音视频包,FLV属于大端字节序

FLV格式由FLV Header+FLV Body构成:
 

从上图可知,FLV封装主要由以下几个部分组成:‘

FLV Body = PreviousTagSize0 + Tag1 + ..+ PreviousTagSize n + Tag n
PreviousTagSize + Tag = FLV Tag header + Data tag
Data tag = Video(video header + h264 data) / Audio (audio header + aac data)

为了进一步熟悉FLV协议,我们探讨下在RTMP中对FLV的封装。
RTMP的Video FLV Data (封装H.264)

通常,FLV的Video Tag应该由11字节FLV tag headerVideo tag header构成,即:
 

FLV tag Header说明:

PreviousTagSize: 表面之前的 Tag 的长度(tag 头+tag 数据),第一个 tag值是 0
TagType:音频:8, 视频:9
DataSize:flv tag 的数据长度,其实如图里 audio tag 头及其数据长度
Timestamp:时间戳,貌似flv播放需要
TimestampExtended:当时间Timestamp不能表示的时候,启用本扩展字段
StreamID:都填 0.

但是,在RTMP协议中,Video Tag不包含FLV tag header,即只有Video tag header,并且封装的H.264数据需要区分PPS/SPS NALU普通NALU,具体结构如下:

  • PPS/SPS NALU

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值