容器格式 Container format

一个多媒体容器格式是一种文件格式,它指定如何将数据存储在文件中。它并不指定数据应该如何编码。它也被称为meta-format,因为 它不是只存储实际数据,而且描述了数据信息是如何在文件中存储。音频或视频流可以使用许多不同的算法进行编码,但它们只是在很少的几种文件格式中存储。
下图(来自互联网)体现了编解码器Codec和容器格式Container format的关系。

容器 目录规范 容器编码格式_编解码器

用于实际上编码/解码视听数据的算法称为编解码器。编解码器Codec是为编码器/解码器的简称。容器中的编解码器的头(Codec header)包含了非常重要的信息对于用来解码视频文件。例如,它描述了有关视频的帧的帧率,分辨率和编码算法等。音频/视频流解码总是根据在编解码器 中的资料头结构。不同的容器格式会拥有不同的头结构(header structure)。

视频播放器先读取在容器文件编解码器的头信息,然后在视频播放器里找到对应分路器,并初始化将用于视频解码运行时播放视频流的适当的解码器。

现在大部分的编解码器信息不是被储存在文件的开头,就是被存储在文件的末尾,在播放视频的时候,作为头信息没有需要作任何的改变。这意味着 每当视频播放器遇到一个新的视频文件,视频播放器必须读取头文件信息,然后初始化相应的解码器,最后解码和播放视频。这个过程会导致在视频播放的时候会产 生几毫秒的延迟。这就是为什么我们不能播放两个单独视频文件,在同一个视频播放器实例,除非视频播放器同时提供了一个或多个缓冲区,或者相应功能的多个实 例编解码器。