我很困惑...音频/视频编解码器(显然是“编码器/解码器”的简写,有点像“调制解调器”实际上是“调制器/解调器”)和音频/视频格式之间有什么区别?
(我使用的术语正确吗?)
即:说某个东西是“MPEG-4”和说某个东西使用“DivX”编解码器之间有什么区别?为什么 Windows Media Player 有时会运行.mpg
文件,有时却不会?
另外,以下哪些是编解码器,哪些是文件格式,哪些都不是?
- Quicktime MOV
- MPEG(1、2、3、4)
- 音频视频
- FFmpeg
- 音频视频编码
- 西维德
- DivX(它与回文 Xvid 有何不同?)
- H.264
答案1
一些主要的定义:
- 一个编解码器(例如H.264,HEVC,VP9)只负责视频或音频部分,一个或多个编解码器可以合并到一个容器中。
- 容器(例如 MP4、MKV)负责将它们保存在一起,这也是您通常在所选的媒体播放器中打开的内容。
- 特定编码器(例如 x264、libvpx)负责将输入流转换为符合编解码器的比特流。一个特定编解码器通常有多个编码器。
正如您所看到的,我们必须在这里解释一些事情。
什么是编解码器?
A编解码器是编码器/解码器的缩写,其基本含义如下:编码器生成的数据始终可以由适当的解码器解码。这恰好适用于视频、音频,但您也可以考虑加密(编码器需要适当的解码器才能显示加密消息)。
如今,当指定一个视频编解码器时,参与其中的机构通常仅指定语法标准。例如,他们会说:“比特流格式必须是这样的”、“这里的0x810429AAB
要翻译成那样”等等。他们通常会提供参考编码器和解码器,但如何编写编码器以完全匹配这种格式则取决于制造商。
这就是为什么你会发现如此多针对同一种编解码器的编码器,其中一些甚至是商业的。
案例 – H.264
在我们混淆术语之前,让我们举一个例子。考虑一下H.264。该标准的名称是 H.264 – 这不是实际编码器的名称。主概念是一个非常好的商业编码器,而x264是免费且开源的。当然,两者都声称提供良好的质量。
仅凭你可以优化编码这一事实就足以形成竞争。两种编码器都将提供标准化的比特流,该比特流始终可以由符合 H.264 标准的解码器进行解码。
总结
总而言之,我们可以说编码器将:
- 拍摄视频帧
- 产生有效的比特流
然后将比特流多路复用到容器中。
解码器将:
- 获取有效的比特流
- 从中重建视频帧
它们都符合编解码器标准。就这些!
当前编解码器
如今,你可能只会找到使用我将在下面提到的编解码器编码的视频。有趣的是,几乎全部其中大部分是由电影专家组(MPEG)。但也有一些其他免版税的编解码器,例如由 Google 或开放媒体联盟创建的编解码器,它们是 MPEG 标准的竞争对手。
请注意,“MPEG”既可以指代编解码器,也可以指代容器,如下所示。这增加了混淆,但只需知道“MPEG”本身并不意味着什么,例如“我有一个 MPEG 格式的文件”就是非常模糊的”。
MPEG-2
MPEG-2 相当古老。它的第一个公开版本是在 1996 年。MPEG-2 视频主要用于 DVD 和电视广播,例如 DVB-T 或卫星,以及兼容性很重要的传统应用程序。MPEG-2 视频主要出现在.MPG容器。
MPEG-4 第 2 部分
这可能是 2000 年代中期用于编码网络视频的主要方法,但目前已被取代。它在实际文件大小下提供了良好的质量,这意味着您可以将 90 分钟长的整部电影刻录到 600 MB 的 CD 上(而使用 MPEG-2 则需要 DVD,请参阅我的回答)。它不再适合播放高清或 4K 内容。
一些输出 MPEG-4 Part 2 视频的编码器是DivX,其开源盗版高清, 和Nero 数码。
MPEG-4 第 2 部分视频大多采用AVI容器,但是MP4也经常看到。
MPEG-4 第 10 部分 / AVC / H.264
这也称为MPEG-4 高级视频编码 (AVC)或者H.264;它是当今最常用的编解码器。它以较小的文件大小提供良好的质量,因此非常适合用于互联网或移动设备的各种视频。从手机到摄像机,几乎每个现代应用程序都会使用 H.264。在蓝光盘上,视频现在采用 H.264 编码。
它的一些编码器是:x264,神经网络(来自 NVIDIA)主概念。视频大多来自MP4,美军或者金属氧化物变阻器容器。
HEVC / H.265
也称为 MPEG-H 第 2 部分,这是 MPEG-4 第 10 部分/AVC/H.264 的后继者。它旨在实现更高的分辨率(最高可达8K),与 H.264 相比,编码性能可提高 50%(质量与比特率对比)(参见这张纸, 例如)。
该标准于 2013 年发布,慢慢地,编解码器开始越来越多地被使用,例如用于 IPTV 或在线视频传输。Apple 还使用 HEVC 来存储视频和图像(使用高级信息接口) 在 iOS 上。然而,由于 HEVC 有多个专利池,许多公司(几乎所有公司,除了苹果)都转向免版税替代方案。HEVC 也是不受原生支持被所有浏览器所阻止,因此无法用于网络流媒体。
最著名的编码器是x265. 还有神经网络。视频通常来自MP4容器。
VP9 和 AV1
VP9(VP8 的后继者)是 Google 主要开发的编解码器。它是开放且免版税的,并且已在许多浏览器中实现。其质量几乎与 HEVC 一样好,有时甚至更好(见这张纸由 Netflix 提供)。当您在支持 VP9 的浏览器上观看 YouTube 时,您将获得 VP9。
VP9 可以使用libvpx编码器,它经常出现在WebM或者美军容器。
一些公司联合起来,组成了 HEVC 更强大的竞争对手——但作为免版税的替代品。AV1将成为 VP9 的继任者,它基于原本应该成为 VP10 的内容。它得到了开放媒体联盟(由亚马逊、思科、谷歌、英特尔、微软、Mozilla 和 Netflix 创立)的支持。阅读更多详情请点击此处。
这利宝姆编码器可用于生成 AV1 比特流,但仍处于实验阶段。
什么是格式(容器)?
到目前为止,我们只解释了原始“比特流”,它基本上就是真正的原始视频数据。您实际上可以使用这种原始比特流继续观看视频。但在大多数情况下,这还不够或不切实际。
因此,您需要将视频包装在容器中。原因如下:
- 也许你想要一些音频和视频
- 也许你想跳到视频中的某个部分(例如,“转到 1:32:20.12”)
- 音频和视频应完美同步
- 视频可能需要通过可靠的网络传输,然后分成数据包,然后
- 视频甚至可能通过有损网络(如 3G)发送,然后分成数据包,然后
出于所有这些原因,人们发明了容器格式,有些简单,有些更先进。它们的作用都是将视频比特流“包装”到另一个比特流中。
容器将根据其演示时间戳(PTS),确保它们同时显示。如果有必要,它还会负责添加流媒体服务器的信息,以便流媒体服务器知道何时发送文件的哪一部分。
让我们来看看一些流行的容器。
热门容器
您会发现大多数视频都封装在以下容器中。还有一些不太流行的容器,但正如我所说,大多数是这些:
AVI
音频视频交错 — 这是最基本的容器,它只是用来交错音频和视频。它写于 1992 年,至今仍在使用,但已被视为遗留问题,因此不再使用。
MP4
也被称为MPEG-4 第 14 部分并且基于 QuickTime 文件格式。这是 H.264 视频的首选格式,但它也包含 HEVC、MPEG-4 Part 2 和 MPEG-2。
此容器也可能只包装音频,这就是为什么你会发现很多 .mp4 文件不是视频,而是AAC 编码音频,也包含在 .m4a 文件中(只是扩展名不同)。扩展名 .m4v 通常用于视频比特流。
美军和WebM
Matroska Video (MKV) 是一种如今常见的开源免费文件格式,因为它支持基本上任何编解码器,从 H.264 到 VP9,当然也支持许多音频编解码器。
WebM 基于 MKV,主要用于 VP9 视频和 Opus 音频——当使用这些编解码器时,它是网络流视频的首选容器。
奥格
Ogg 容器是 Theora 视频编解码器(以及 Vorbis 音频编解码器),也是由 Xiph.Org 基金会创建的。它也是免费和开源的(就像编解码器一样)。
音频视频
Flash 视频格式由 Adobe 创建,用于其流媒体应用程序。由于流媒体方式在过去几年发生了巨大变化,因此现在这种格式已不常用。
流行的编解码器和格式
另外,以下哪些是编解码器,哪些是文件格式,哪些都不是?
- Quicktime MOV:.mov是文件扩展名QuickTime 文件格式,这是一个容器由 Apple 创建。此容器后来被改编为 MP4。它可以承载各种编解码器。Quicktime实际上是一个完整的媒体框架,就我而言,它本身并没有真正指定任何编解码器。
- MPEG(1、2、3、4):由电影专家组定义的标准。详情请参阅我上面的帖子。
- 音频视频:Windows Media Video。它实际上是编解码器包裹在高级系统格式容器,它使用.wmv再次扩展。很奇怪,但事实就是这样。
- FFmpeg:这既不是编解码器也不是容器。它是一个视频工具库,还允许在不同的编解码器和容器之间进行转换。FFmpeg 分别依赖于开源
libavcodec
和libavformat
库来创建编解码器和容器。您今天找到的大多数视频工具都是基于它的。 - 音频视频编码:MPEG-4 Part 10 或 H.264 的同义词。
- DivX:另一种用于 MPEG-4 Part 2 视频的编码器。
- 西维德:一种用于 MPEG-4 Part 2 视频的编码器。它只是 DivX 的开源免费版本,这当然引起了一些争议。
- H.264:MPEG-4 Part 10 或 AVC 的同义词。
附注:
我使用的术语正确吗?
我猜有人会更喜欢使用“编解码器”和“容器”而不是“格式”,以避免误解。格式理论上可以是任何东西,因为编解码器和容器指定格式(即数据应如何表示)。
话虽如此,FFmpeg术语将使用“格式”来表示容器。这也是因为以下两者的区别:
libavcodec
,用于编码/解码的库libavformat
,容器的库
答案2
一般来说,媒体“格式”实际上是一个容器,包含音频流(某些音频编解码器)和视频流(某些视频编解码器),有时还包含附加信息。大多数“文件”的文件类型基于容器而不是编解码器
FFmpeg 既不是一个容器也不是一个编解码器——它是一个多功能的库、编解码器和文件转换软件套件,是许多转换器和音乐播放器的基础。
H.264/AVC 和 xvid/divx 是编解码器
AVI(divx/xvid 文件即为此类)、mp4、mpeg 都是容器。
我不确定 quicktime mov - .mov 是一个容器,quicktime 是一个编解码器。
答案3
答案4
格式是特定文件格式类型和压缩类型的名称(大多数视频都经过压缩以减小大小),而编解码器则可以实际压缩、读取并通过解压将其转换为您看到的视频。换句话说,一个是文件类型,另一个是软件。
我们通常用格式名称来指代大多数视频,因此 Quicktime MOV、MPEG 和 WMV 都是格式。
FFmpeg(我从未听说过)似乎是一个将各种格式转换为其他格式的软件的名称。
AVC 和 H.264 相同,都是用于编码高清视频的格式。
DivX 是一种商业销售的编解码器。
Xvid 是 MPEG-4 的编解码器。