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

用户541686

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

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

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

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

一些主要定义:

  • 编解码器(例如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关联的专利池众多,这一事实使许多公司(除Apple外,几乎所有公司)都转向了免专利费的替代方案。并非所有浏览器都原生支持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,容器的库

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

FFmpeg 中的 HuffYUV 和 ffvhuff 编解码器有什么区别?

hadoop中压缩编解码器和文件格式之间的区别?

G.729编解码器变体之间的区别是什么

Asterisk需要编解码器做什么?

有什么方法可以确定 AVPlayer 正在使用什么编解码器?

为什么 Linux 使用非自由编解码器,为什么需要编解码器?

带有较大文件(像素格式,编解码器)的UIGraphicsBeginImageContext中的UIImage失真

有什么方法可以自动创建Mongo编解码器?

贪婪解码器RNN和k = 1的波束解码器有什么区别?

致命的python错误的原因可能是什么:initfsencoding:无法加载文件系统编解码器?

gsutil无法上传带有“编解码器无法解码字节”错误的文件

我如何(或有可能)将AVC编解码器配置文件和级别转换为MIME编解码器定义?

更改WAV文件的编解码器

使用 python 编解码器保存文件

Apache 通用编解码器 - 为什么 Hex.encode() 不是静态的?

用于 IO 的 Netty 什么都不做的编解码器?

压缩/解压缩,什么使编解码器可拆分?

为什么在BER编解码器中使用Math.floor()代替整数除法

什么是“ Azalia内部HDMI编解码器” BIOS设置?

为什么Chrome WebRTC现在不支持iLBC音频编解码器

为什么默认情况下不包含多媒体编解码器?

什么是 MOJO 编解码器以及它如何与 ffmpeg 一起使用

在Python中使用编解码器编码的正确方法是什么?

合并具有不同编解码器的音频文件

了解Unicode编解码器

FFProbe获取编解码器

安装媒体编解码器

ir定制编解码器

弹道预测的编解码器