在生活语境里所说的“视频格式”,在学术上有两个概念与之对应:Container format (封装格式)和Codec (暂且译为“编解码格式”)。
1. Container format (封装格式)
Container format 描述了视频文件的结构。正如它的字面含义所说,它是对一个“容器”的规范。一个视频文件往往会包含图像和音频,还有一些配置信息(如图像和音频的关联,如何解码它们等):这些内容需要按照一定的规则组织、存储起来,Container format就是这些规则。
如果一个视频文件是以某个Container format封装起来的,那么它的后缀名一般会体现出来。所以,后缀名只是形式,只是为了便于识别(例如,windows系统会根据文件的后缀名决定以什么程序打开它),无决定性的意义。
3. Container format (封装格式)和Codec (编解码格式)有关系吗?
不妨将视频文件看作容器(Container),那么这个容器里盛放的就是遵循某种Codec的内容(Content)。一个容器里应该能放下视频、音频、数据信息,即使它们遵循的Codec不相同。例如,QuickTime File Format (.MOV)支持几乎所有的Codec,MPEG(.MP4)也支持相当广的Codec。所以,单从视频文件的格式是无法获知它的质量细节的,这些细节取决与采用的Codec。比较专业的说法是,“给我一个H.264 Quicktime文件(.mov)”。
4. 为何还是有点迷糊?
以上的解释是从学术角度出发的,在学术上区分它们没有一点障碍。但现实生活中人们不会一丝不苟地区分“Container format ”“Codec”,往往只会说“这是一个mov格式的文件”。这是将日常用语与学术术语混为一谈导致的理解混乱。
另外,Container format和Codec的命名法有点奇葩,明白人有时也会晕。例如,“MPEG-4”既是“Container format ”,也是“Codec”,这确实够烦的。
看原版的资料:
1. https://library.rice.edu/services/dmc/guides/video/VideoFormatsGuide.pdf
2. Codecs And Formats -- Zencoder