什么是编解码器(例如DivX?),它与文件格式(例如MPG)有何不同?


95

我很困惑...音频/视频编解码器(显然是“编码器/解码器”的简写,有点像“调制解调器”实际上是“调制器/解调器”之间的区别)和音频/视频格式?
(我甚至使用正确的术语吗?)

即:说“ MPEG-4”和说“ DivX”编解码器有什么区别?为什么Windows Media Player有时运行.mpg文件,而有时却不运行文件?

另外,以下哪些是编解码器,哪些是文件格式,哪些都不是?

  • Quicktime MOV
  • MPEG(1、2、3、4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX(与回文Xvid有什么不同?)
  • H.264

2
六年后,我问自己一个问题,我所能想到的就是“你怎么不知道呢?!”
Mehrdad'7

1
我们都是从某个地方开始的。;)
Hashim

Answers:


146

一些主要定义:

  • 编解码器(例如H.264,HEVC,VP9)仅负责视频或音频部分,并且一个或多个编解码器可以合并到容器中。
  • 容器(例如MP4,MKV)负责将它们保持在一起,这也是您通常在选择的媒体播放器中打开的容器。
  • 特定的编码器(例如x264,libvpx)负责将输入流转换为符合编解码器的比特流。一个特定编解码器通常有多个编码器。

如您所见,我们将在这里解释一些事情。

什么是编解码器?

编解码器是用于短编码器/解码器,它基本上只是意味着:由编码器产生的数据总是可以通过适当的解码器进行解码。这恰好对视频,音频有效,但是您也可以考虑使用加密技术(编码器需要适当的解码器来显示加密的消息)。

如今,当指定了视频编解码器时,参与其中的机构通常仅指定该标准的语法。例如,他们会说:“比特流格式必须像这样”,“ 0x810429AAB这里将被翻译成那个”等。通常,他们提供参考编码器和解码器,但是如何编写编码器以匹配这样的编码器。格式完全取决于制造商。

这就是为什么您会发现许多用于同一编解码器的编码器,而其中一些甚至是商业编码器的原因。

案例– H.264

在混淆术语之前,让我们举一个例子。考虑H.264的情况。该标准的名称是H.264 –不是实际编码器的名称。Mainconcept是一种非常好的商业编码器,而x264是一种免费且开源的编码器。当然,两者都声称提供高质量。

您可以优化编码的事实使这里成为竞争。两种编码器都将提供标准化的比特流,该比特流始终可由兼容H.264的解码器解码。

总结一下

因此,总而言之,让我们说一个编码器将:

  • 拍摄视频帧
  • 产生有效的比特流

然后将比特流多路复用到一个容器中。

解码器将:

  • 采取有效的比特流
  • 从中重建视频帧

它们都符合编解码器标准。就这样!


当前的编解码器

这些天,您可能只会找到使用我将在下面提到的编解码器编码的视频。有趣的是,它们几乎都是运动图像专家组(MPEG)创建的。但是,还有其他一些免版税的编解码器,例如Google或开放媒体联盟创建的那些编解码器,它们是MPEG标准的竞争对手。

请注意,“ MPEG”可以同时引用编解码器和容器,如下所示。这增加了混乱,但是只知道“ MPEG”本身并不意味着任何事情,例如“我有MPEG格式的文件”是非常含糊的。

MPEG-2

MPEG-2很老了。它的第一个公开发布日期是1996年。MPEG-2视频主要用于DVD和TV广播,例如DVB-T或卫星,以及对兼容性很重要的传统应用。MPEG-2视频通常位于.MPG容器中。

MPEG-4第2部分

这可能是在2000年代中期主要用于对网络视频进行编码的视频,但在此之前已被取代。它以实用的文件大小提供了良好的质量,这意味着您可以将90分钟长的整个电影刻录到600 MB的CD上(而使用MPEG-2则需要DVD,请在此处查看我的答案)。对于HD或4K内容,它不再适用。

一些输出MPEG-4 Part 2视频的编码器是DivX,其开源ripoff XviDNero Digital

MPEG-4第2部分视频大多放在AVI容器中,但也经常看到MP4

MPEG-4第10部分/ AVC / H.264

这也称为MPEG-4高级视频编码(AVC)H.264;它是当今使用最广泛的编解码器。它以小文件大小提供了高质量,因此非常适合Internet或移动设备上的各种视频。从电话到便携式摄像机,几乎所有现代应用中都可以找到H.264。现在,在蓝光光盘上,视频以H.264编码。

某些编码器包括:x264NVENC(来自NVIDIA),Mainconcept。这些视频大多以MP4MKVMOV容器的形式出现。

HEVC / H.265

也称为MPEG-H第2部分,它是MPEG-4第10部分/ AVC / H.264的后继产品。与H.264(例如,参见本文)相比,它的目标是更高的分辨率(最高8K),并且可以提供高达50%的编码性能(在质量与比特率方面)。

该标准于2013年发布,慢慢地,编解码器开始越来越多地用于IPTV或在线视频传输。苹果还使用HEVC 在iOS上存储视频和图像(使用HEIF)。但是,HEVC有多个专利池这一事实使许多公司(除苹果公司外,几乎所有公司)都在转向免专利费的替代方案。并非所有浏览器都原生支持 HEVC ,因此无法将其用于Web流。

最著名的编码器是x265。还有NVENC。这些视频通常放在MP4容器中。

VP9和AV1

VP9(VP8的后继产品)是主要由Google开发的编解码器。它是开放的且免版税的,并且已在许多浏览器中实现。它的质量几乎与HEVC一样好,有时甚至更高(请参阅Netflix的本文)。在支持VP9的浏览器上观看YouTube时,您将获得VP9。

VP9可以使用libvpx编码器进行编码,并且通常包含在WebMMKV容器中。

一些公司聚集在一起,形成了HEVC的更强竞争者-但作为免版税的替代方案。AV1将是VP9的后继产品,它基于原本应该成为VP10的产品。它由开放媒体联盟(由亚马逊,思科,谷歌,英特尔,微软,Mozilla和Netflix创建)支持。在此处了解更多信息

所述libaom编码器可以被用来生成位流AV1,但它仍然是实验性的。


什么是格式(容器)?

到目前为止,我们仅说明了原始的“位流”,它基本上只是真正的原始视频数据。您实际上可以使用这样的原始比特流继续观看视频。但是在大多数情况下,这还不够或不切实际。

因此,您需要将视频包装在容器中。原因有以下几种:

  • 也许你想要一些音频和视频
  • 也许您想跳到视频中的某个部分(例如“转到1:32:20.12”)
  • 音频和视频都应该完美同步
  • 视频可能需要先通过可靠的网络传输并拆分为数据包,然后才能
  • 视频甚至可以通过有损网络(例如3G)发送,并在分成几部分之前

由于所有这些原因,发明了容器格式,一些简单,一些更高级。他们所做的就是将视频比特流“包装”到另一个比特流。

容器将根据其显示时戳(PTS)同步视频和音频帧,以确保它们完全在同一时间显示。如果需要,它还将负责为流服务器添加信息,以便流服务器知道何时发送文件的哪一部分。

让我们看一些流行的容器。


流行的容器

您会发现大部分包装在以下容器中的视频。还有其他不太受欢迎的,但正如我所说,主要是:

AVI

音频视频交错-这是最基本的容器,可以用来交错音频和视频。它写于1992年,至今仍在使用,但被认为是旧版,因此不再使用。

MP4

也称为MPEG-4 Part 14,它基于QuickTime文件格式。这是H.264视频的首选格式,但它也包装了HEVC,MPEG-4 Part 2和MPEG-2。

该容器还可能只包装音频,这就是为什么您会在.m4a文件(只是一个不同的扩展名)中找到这么多.mp4文件的原因,这些文件不是视频,而是经过AAC编码的音频。扩展名.m4v通常用于视频比特流。

MKVWebM

Matroska Video(MKV)是一种开源且免费的文件格式,如今已很常见,因为它基本上支持从H.264到VP9的任何编解码器,当然也支持许多音频编解码器。

WebM基于MKV,主要用于VP9视频和Opus音频-使用这些编解码器时,它是Web流视频的首选容器。

奥格

Ogg容器是Theora视频编解码器(和Vorbis音频编解码器)的首选容器,该视频编解码器也由Xiph.Org基金会创建。它也是免费和开源的(就像编解码器一样)。

轻型货车

Flash视频格式由Adobe创建,用于其流应用程序。由于过去几年流式传输的方式已发生了巨大变化,因此不再使用它了。


流行的编解码器和格式

另外,以下哪些是编解码器,哪些是文件格式,哪些都不是?

  • Quicktime MOV.movQuickTime文件格式的文件扩展名,它是Apple创建的容器。此容器后来被改编成MP4。它可以携带各种编解码器。Quicktime实际上是一个完整的媒体框架,就我而言,它实际上并未指定任何编解码器本身。
  • MPEG(1、2、3、4):运动图像专家组定义的标准。有关详细信息,请参见上面的我的帖子。
  • WMV:Windows Media视频。它实际上是一个包装在Advanced Systems Format容器中的编解码器,该容器再次使用.wmv扩展名。很奇怪,但这就是事实。
  • FFmpeg:这既不是编解码器也不是容器。它是一个视频工具库,还允许在不同的编解码器和容器之间进行转换。FFmpeg分别依靠开源libavcodeclibavformat库来创建编解码器和容器。您今天发现的大多数视频工具都基于此。
  • AVC:MPEG-4 Part 10或H.264的同义词。
  • DivX:MPEG-4 Part 2视频的另一种编码器。
  • Xvid:一种用于MPEG-4 Part 2视频的编码器。它只是DivX的开源,免费版本,这当然引起了一些争议。
  • H.264:MPEG-4第10部分或AVC的同义词。

附带说明:

我什至使用了正确的术语?

我想曾经有一次宁愿专门使用“编解码器”和“容器”而不是“格式”来避免误解。理论上,格式可以是任何格式,因为编解码器容器都指定格式(即,数据应如何表示)。

话虽如此,FFmpeg术语将是对容器使用“格式”。这也是由于以下两者之间的区别:

  • libavcodec,用于编码/解码的库
  • libavformat,容器的库

33
现在,这就是人们可以正确回答的问题。做得好。
Francesco

1
很好的答案,但是您错过了Ogg容器格式。
伊格纳西奥·巴斯克斯

7
这是我一段时间以来看到的最棒的答案。非常感谢您的出色解释!:)
Mehrdad

@Mehrdad Glad,我可以向这个主题阐明一些信息。谢谢您:)
slhck 2011年

1
有时您希望可以对一个答案进行多次投票:)
Dolf

3

通常,媒体“格式”实际上是一个容器,包含音频流(某些音频编解码器)和视频流(某些视频编解码器),有时还包含其他信息。您拥有的大多数“文件”都有基于容器而不是编解码器的文件类型

FFmpeg既不是容器也不是编解码器,它是一套多功能的库,编解码器和软件套件,用于转换文件,这些文件是许多转换器和音乐播放器的基础。

H.264 / AVC和xvid / divx是编解码器

AVI(divx / xvid文件是),mp4,mpeg是容器。

我不确定quicktime mov-.mov是一个容器,quicktime是一个编解码器。


没有“ Quicktime”编解码器。Quicktime是一个多媒体框架,包括.mov容器,用于编码,解码和显示一系列编解码器的软件,以及其他类似Quicktime VR的工具。
stib 2014年

1

编解码器容器(文件格式)。编解码器描述了如何对数据进行编码/解码。另一个描述了编码后的数据如何放置在文件中。

大多数媒体播放器支持多种编解码器和容器类型。这很令人困惑,因此我建议您阅读我的参考资料以获取更多信息。


-1

格式是为特定文件格式类型和压缩类型指定的名称(大多数视频都经过压缩以减小尺寸),而编解码器实际上是可以对其进行压缩,读取并通过解压缩将其转换为您看到的视频的名称。 。换句话说,一种是文件类型,而另一种是软件。

我们通常使用格式名称来引用大多数视频,因此Quicktime MOV,MPEG和WMV是格式。

FFmpeg(我从未听说过)似乎是将各种格式转换为其他格式的软件的名称。

AVC和H.264是相同的,并且是用于编码高清视频的格式。

DivX是市售的编解码器。

Xvid是MPEG-4的编解码器。


1
ffmpeg几乎是99%的FOSS转换器的后端。
Journeyman Geek

这个答案是错误的。在7个句子中,只有数字6和7是正确的,即使那些数字不够详细。
jiggunjer 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.