我很困惑...音频/视频编解码器(显然是“编码器/解码器”的简写,有点像“调制解调器”实际上是“调制器/解调器”之间的区别)和音频/视频格式?
(我甚至使用正确的术语吗?)
即:说“ MPEG-4”和说“ DivX”编解码器有什么区别?为什么Windows Media Player有时会运行.mpg
文件,而有时却不运行文件?
另外,以下哪些是编解码器,哪些是文件格式,哪些都不是?
一些主要定义:
如您所见,我们将在这里解释一些事情。
甲编解码器是用于短编码器/解码器,它基本上只是意味着:由编码器产生的数据总是可以通过适当的解码器进行解码。这恰好对视频,音频有效,但是您也可以考虑使用加密技术(编码器需要适当的解码器来显示加密的消息)。
如今,当指定了视频编解码器时,参与其中的机构通常仅指定标准的语法。例如,他们会说:“比特流格式必须像这样”,“0x810429AAB
这里将被翻译成那个”等。通常,他们提供参考编码器和解码器,但是如何编写编码器以匹配这样的编码器。格式完全取决于制造商。
这就是为什么您会发现很多用于同一编解码器的编码器,甚至其中一些甚至是商业编码器的原因。
在混淆术语之前,我们先举一个例子。考虑H.264的情况。该标准的名称是H.264 –这不是实际编码器的名称。Mainconcept是一种非常好的商业编码器,而x264是一种免费和开源的编码器。当然,两者都声称提供高质量。
您可以优化编码的事实使这里成为竞争。两种编码器都将提供标准化的比特流,该比特流始终可由兼容H.264的解码器解码。
因此,总而言之,让我们说一个编码器将:
然后将比特流多路复用到一个容器中。
解码器将:
它们都符合编解码器标准。就这样!
这些天,您可能只会找到使用我将在下面提到的编解码器编码的视频。有趣的是,它们几乎都是由运动图像专家组(MPEG)创建的。但是,还有其他一些免版税的编解码器,例如Google或开放媒体联盟创建的那些编解码器,它们是MPEG标准的竞争对手。
请注意,“ MPEG”可以同时引用编解码器和容器,如下所示。这增加了混乱,但是只知道“ MPEG”本身并不意味着任何事情,例如“我有MPEG格式的文件”非常模棱两可”。
MPEG-2很老了。它的第一个公开发布日期是1996年。MPEG-2视频主要用于DVD和TV广播,例如DVB-T或卫星,以及对兼容性很重要的传统应用。MPEG-2视频通常位于.MPG容器中。
这可能是在2000年代中期主要用于对网络视频进行编码的视频,但是在此之前它已被取代。它以实用的文件大小提供了良好的质量,这意味着您可以将90分钟长的整个电影刻录到600 MB的CD上(而使用MPEG-2则需要DVD,请在此处查看我的答案)。对于HD或4K内容,它不再适用。
一些输出MPEG-4 Part 2视频的编码器是DivX,其开源ripoff XviD和Nero Digital。
MPEG-4第2部分视频大多放在AVI容器中,但也经常看到MP4。
这也称为MPEG-4高级视频编码(AVC)或H.264。它是当今使用最广泛的编解码器。它以小文件大小提供了高质量,因此非常适合Internet或移动设备上的各种视频。从电话到便携式摄像机,几乎所有现代应用中都可以找到H.264。现在,在蓝光光盘上,视频以H.264编码。
某些编码器是:x264,NVENC(来自NVIDIA),Mainconcept。这些视频大多以MP4,MKV或MOV容器的形式出现。
也称为MPEG-H第2部分,它是MPEG-4第10部分/ AVC / H.264的后继产品。与H.264(例如,请参见本文)相比,它的目标是更高的分辨率(最高8K),并且可以提供高达50%的编码性能(在质量与比特率方面)。
该标准于2013年发布,并且编解码器逐渐开始被越来越多地使用,例如,用于IPTV或在线视频传输。苹果还使用HEVC在iOS上存储视频和图像(使用HEIF)。但是,与HEVC关联的专利池众多,这一事实使许多公司(除Apple外,几乎所有公司)都转向了免专利费的替代方案。并非所有浏览器都原生支持HEVC ,因此无法将其用于Web流。
最著名的编码器是x265。还有NVENC。这些视频通常以MP4容器的形式出现。
VP9(VP8的后继产品)是主要由Google开发的编解码器。它是开放的且免版税的,并且已在许多浏览器中实现。它的质量几乎与HEVC一样好,有时甚至更高(请参阅Netflix的本文)。在支持VP9的浏览器上观看YouTube时,您将获得VP9。
VP9可以使用libvpx编码器进行编码,并且通常包含在WebM或MKV容器中。
一些公司聚集在一起,形成了HEVC的更强大竞争对手-但作为免版税的替代方案。AV1将是VP9的后继产品,它基于原本应该成为VP10的产品。它由开放媒体联盟(由亚马逊,思科,谷歌,英特尔,微软,Mozilla和Netflix创建)支持。在这里阅读更多有关它的信息。
所述libaom编码器可以被用来生成位流AV1,但它仍然是实验性的。
到目前为止,我们仅说明了原始的“比特流”,它基本上只是真正的原始视频数据。您实际上可以使用这样的原始比特流继续观看视频。但是在大多数情况下,这还不够或不切实际。
因此,您需要将视频包装在容器中。原因有以下几种:
由于所有这些原因,发明了容器格式,一些简单,一些更高级。他们所要做的就是将视频比特流“包装”到另一个比特流中。
容器将根据它们的表示时间戳(PTS)同步视频和音频帧,以确保它们完全在同一时间显示。如果需要,它还将负责为流服务器添加信息,以便流服务器知道何时发送文件的哪一部分。
让我们看一些流行的容器。
您会发现大部分包装在以下容器中的视频。也有其他较不受欢迎的,但正如我所说,主要是:
音频视频交错-这是最基本的容器,可以用来交错音频和视频。它写于1992年,至今仍在使用,但被认为是旧版,因此不再使用。
也称为MPEG-4 Part 14,它基于QuickTime文件格式。这是H.264视频的首选格式,但它也包装了HEVC,MPEG-4 Part 2和MPEG-2。
该容器还可能只包装音频,这就是为什么您会在.m4a文件(只是一个不同的扩展名)中找到这么多.mp4文件的原因,这些文件不是视频,而是经过AAC编码的音频。扩展名.m4v通常用于视频比特流。
Matroska Video(MKV)是一种开源且免费的文件格式,如今已很常见,因为它基本上支持从H.264到VP9的任何编解码器,当然也支持许多音频编解码器。
WebM基于MKV,主要用于VP9视频和Opus音频-使用这些编解码器时,它是Web流视频的首选容器。
Ogg容器是Theora视频编解码器(和Vorbis音频编解码器)的首选容器,该视频编解码器也由Xiph.Org基金会创建。它也是免费和开源的(就像编解码器一样)。
Flash视频格式由Adobe创建,供其流应用程序使用。由于过去几年流式传输的方式已发生了巨大变化,因此不再使用它了。
另外,以下哪些是编解码器,哪些是文件格式,哪些都不是?
libavcodec
和libavformat
库来创建编解码器和容器。您今天发现的大多数视频工具都基于此。附带说明:
我什至使用了正确的术语?
我想曾经有一次宁愿专门使用“编解码器”和“容器”而不是“格式”来避免误解。理论上,格式可以是任何格式,因为编解码器和容器都指定格式(即,数据应如何表示)。
话虽如此,FFmpeg术语将是对容器使用“格式”。这也是由于以下两者之间的区别:
libavcodec
,用于编码/解码的库libavformat
,容器的库本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句