FLV的总体结构
FLV是一种常见的音视频封装,尤其在流媒体场景经常用到。FLV也是比较简单的封装,它是一个个tag组成。tag又分为视频tag、音频tag、script tag,分别用来存放视频数据、音频数据和MetaData数据。
总体格式如下图:
FLV Header
FLV Header占用9个字节。前三个字节是文件的标识,固定是FLV。之后是1个字节标识版本。在之后的一个字节中的第六位表示是否存在音频数据,第8位表示是否存在视频数据,其他位都是0。最后四个字节表示从文件开头到FLV Body开始的长度,一般就是9
FLV Body
放置着一个个tag。在每一个Tag前面都有一个4字节的字段,表示上一个tag的大小。再之后就是具体的tag,tag由tag header和tag data组成,tag header占用11个字节。
tag data
有三种数据script、音频、视频。
Script
存放的是Metadata数据,包括宽、高、时长、采样率等基础信息。
音频数据
视频数据
如果是H264数据,紧接着后面会有4字节的AVC Packet Type类型
如果AVC包类型是0,则格式如下:
如果AVC类型是0
文章来自多方面的学习积累,请各位大佬指正