音视频封装: FLV & MP4

音视频封装其实就是将一帧帧视频和音频数据按照对应封装的标准有组织地存放在一个文件里面,并且再存放一些额外的基础信息,比如说分辨率、采样率等信息。那到底怎么组织这些基础信息还有音视频数据呢?我们接下来先看看 FLV 是怎么做的。

FLV

FLV 是一种非常常见的音视频封装,尤其是在流媒体场景中经常用到。FLV 封装也是比较简单的封装格式,它是由一个个 Tag 组成的。Tag 又分为视频 Tag、音频 Tag 和 ScriptTag,分别用来存放视频数据、音频数据和 MetaData 数据。

下图就是 FLV 的总体结构图:
在这里插入图片描述
其总体格式图如下:
在这里插入图片描述
FLV Header

其中,FLV Header 占用 9 个字节。前 3 个字节是文件的标识,固定是 FLV。之后的 1 个字节表示版本。在之后的 1 个字节中的第 6 位表示是否存在音频数据,第 8 位表示是否存在视频数据,其他位都为 0。最后的 4 个字节表示从文件开头到 FLV Body 开始的长度,一般就是等于 9。

FLV Body

在 FLV Header 之后就是 FLV Body 了,这就是存放主要数据的地方,放置着一个个Tag。在每一个 Tag 前面都有一个 4 字节的 Previous Tag Size,表示前一个 Tag 的大小,方便往回倒。再之后就是具体的 Tag 了。Tag 又是由 Tag Header 和

猜你喜欢

转载自blog.csdn.net/guofeidageda/article/details/128723523