视频编解码器介绍
为什么需要视频编解码器
视频编解码器(Video Codec)就是用于将视频信号进行压缩编码(编码器)和解压缩解码(解码器)的软件或硬件工具。这么说似乎有点难理解,用大白话说视频编解码器就是一个“视频翻译官”。视频编码就是将视频数据翻译为数字信号,视频解码就是将数字信号重新翻译为视频数据。
编解码器最直接的功能就是采用压缩技术将原始视频信号转换为数字数据,并通过各种技术和方法来减小视频文件的大小,以便更有效地存储、传输和处理视频。这些算法包括去除冗余信息、降低图像精细度、使用压缩编码等方法,以降低数据量同时尽量保持视频质量。
而对于只是简单的玩转 ffmpeg 的小白用户来说,你可以简单的理解为视频编码器就是视频压缩算法(实际上视频压缩算法是视频编码器的核心组成部分)。
下面是几个主流的视频编解码器:
H.264(AVC)
H.264 也称为 AVC,于2003年发布。它的官方标准由国际电信联盟(ITU-T)和国际标准化组织(ISO)联合发布,官方标准文件称为H.264/AVC标准(可在ITU-T和ISO的官方网站上找到)。
H.264的推出是为了提供更高效的视频压缩,以适应不断增长的高清视频需求和提高网络带宽效率。同时是现在最普遍使用的编解码格式(几乎所有现代设备和平台都支持H.264),具有高效的压缩性能。
主要应用场景包括流媒体、在线视频流、视频通话、蓝光光盘等,是绝大多数视频默认的编码格式。
H.265(HEVC)
H.265 也称为 HEVC,于2013年发布。是H.264的后继者,同样是由ITU-T和ISO发布,称为H.265/HEVC标准。相较于H.264,H.265采用了更先进的压缩技术,包括更高效的运动估计和变换编码。
主要应用于对视频质量要求高的场景,如4K、8K、蓝光光盘等。
VP9
VP9由Google开发并开源的编码标准,于2013年发布。不过没有官方标准文件,你可以在WebM项目的官方网站(https://www.webmproject.org)上找到有关VP9的更多信息。
VP9 旨在提供高质量的视频压缩,主要用于在线视频流、WebRTC、WebM格式的视频(如 youtube)。
AV1
AV1 是一款比较新的视频编码,AV1于2018年发布,由多家科技公司联合开发一种免费的开放源代码视频编码标。没有对应的官方标准文件。不过你可以在Alliance for Open Media(AOMedia)的官方网站上(https://aomedia.org)找到有关AV1的更多信息。
虽然也是主流的视频编解,但是不怎么推荐,因为太过新颖,存在很多兼容性问题。
主流视频编码器比较(AV1、H.265、H.264及VP9)
| 压缩效率 |
|---|
| AV1 通常被认为是这四种编码中最高效的,能够提供更好的压缩性能。它可以在相同比特率下提供更高质量的视频,或者在相同质量下减少数据流大小。 |
| H.265 在压缩方面优于H.264和VP9,但通常不如AV1。 |
| VP9 的压缩性能较高,特别是相对于H.264来说,但通常不如AV1和H.265。 |
| H.264 是较早的编码标准,压缩性能相对较低,需要更高的比特率以提供相同质量的视频。 |
| 计算复杂性 |
|---|
| AV1 的编码和解码过程相对较复杂,需要更多的计算资源。这可能需要更高性能的硬件来实时编码和解码。 |
| H.265的计算复杂性介于AV1和VP9之间。它比VP9复杂,但相对于AV1较简单。 |
| VP9 的计算复杂性相对较低,比H.265和AV1要简单。 |
| H.264 是四者中最简单的编码标准,对计算资源的要求较低。 |
| 设备兼容性 |
|---|
| 尽管AV1在压缩效率上表现出色,但它的设备兼容性相对较低。不是所有设备都支持AV1,特别是较早的硬件。 |
| H.265在设备兼容性方面表现良好,许多现代设备都支持它,但仍然可能存在一些不兼容的情况。 |
| VP9的设备兼容性较好,尤其是在Web浏览器和一些流媒体平台上。 |
| H.264是最广泛支持的编码标准,几乎所有现代设备都可以播放H.264编码的视频。 |
| 使用场景 |
|---|
| AV1适用于高质量视频传输,特别是在有限带宽条件下,如在线流媒体、高分辨率视频和视频通话等。 |
| H.265广泛用于4K视频传输、数字电视广播和蓝光光盘等高清和超高清视频应用。 |
| VP9主要用于Web浏览器中的在线视频流、YouTube等流媒体平台以及一些移动设备上的视频播放。 |
| H.264仍然广泛用于在线视频流、视频会议、移动视频和传统广播领域。 |
总之,AV1通常被认为是这四种编码中最高效的,但设备兼容性较低,特别是在较早的设备上。选择编码标准通常取决于应用需求、设备兼容性和性能要求。不同的情况下可能会选择不同的编码器,不过我在使用时通常会选择 H.264 和 H.265。
其他视频编解码器
除了上面提到的H.264、H.265、VP9和AV1之外,还有许多其他视频编码器和解码器。以下是一些其他常见的视频编解码器:
MPEG-2
MPEG-2(Moving Picture Experts Group - 2)是一种早期的数字视频编码标准,于1994年发布。它广泛用于数字电视广播、DVD和一些广播应用。MPEG-2支持多种分辨率和比特率配置,因此可以适应不同的传输需求。
MPEG-2采用了离散余弦变换(DCT)来压缩视频,具有良好的图像质量,但相对于后来的标准来说,压缩效率较低。它是一种有损编码方式。
MPEG-2在数字电视广播、DVD制作和一些传统广播领域有广泛应用,但在高清和超高清视频传输方面不太适用。
MPEG-4 Part 2
MPEG-4 Part 2是MPEG-4标准的一部分,也被称为MPEG-4 ASP(Advanced Simple Profile)。它于1999年发布,旨在提供更高的压缩性能和灵活性,适用于在线视频流和视频通信。
MPEG-4 Part 2采用了更复杂的编码技术,包括运动补偿和全局运动补偿等,以提高压缩效率。它也支持更多的编码选项,适应不同的应用需求。
MPEG-4 Part 2在视频通信、视频会议、流媒体和移动视频应用中有广泛应用,尤其在较早的互联网视频时代很受欢迎。
VC-1
VC-1是微软开发的视频编码标准,于2006年成为SMPTE标准。它广泛用于高清视频和蓝光光盘。
VC-1采用了类似于H.264的高级编码技术,包括运动补偿、变换编码和熵编码等。它提供了高质量的视频压缩,适用于高分辨率视频。
VC-1主要用于高清蓝光光盘和一些Windows媒体播放器等产品中,但随着H.264和H.265的出现,使用已经减少。
Sorenson Spark
Sorenson Spark是一种用于Flash视频的编码器,曾在网页视频中非常流行。它的目标是在低带宽环境下提供不错的视频质量。
Sorenson Spark使用H.263基础上的改进技术,采用了矢量量化编码。它在早期的互联网视频时代非常有影响力。
Sorenson Spark主要用于Flash视频播放器,但随着HTML5视频和更高效的编码标准的出现,其使用逐渐减少。
RealVideo
RealVideo是RealNetworks开发的视频编码标准,用于流媒体领域,包括RealPlayer和RealMedia。
RealVideo使用了自己的一套编码技术,包括分层编码和实时传输优化。它的特点是在低带宽环境下提供较好的视频流畅性。
RealVideo在早期互联网流媒体中广泛使用,但现在由于更广泛的流媒体协议和编码标准的出现,使用减少。
MJPEG
MJPEG(Motion JPEG)是一种将视频分解为一系列JPEG图像帧的编码方式,每一帧都是独立的JPEG图像。它通常用于监控摄像头和一些视频编辑应用。
MJPEG简单,每帧都是完整的图像,因此没有帧之间的压缩关联。这使得它易于编辑和处理,但通常需要更多的存储空间和带宽。
MJPEG主要用于一些监控摄像头、摄像机和特殊视频编辑需求中。
这些编码标准在不同的应用领域和时期都发挥了重要作用,但随着时间的推移,一些标准已经过时,而其他标准则继续演进和发展。
选择合适的编码标准通常取决于应用需求、设备兼容性和性能要求。因此,尽可能的还是选择当前主流的视频编码标准吧。
所以,最好的编解码器是什么?
这是一个很难回答的问题,因为这取决于具体的的用途。
不过,如果你需要在网络上共享视频或播放视频,MP4 和 H.264 组合是目前最常见的视频配置。它被大多数网络流媒体网站使用,因为它与大多数操作系统和设备广泛兼容。另外,有线电视和蓝光光盘目前通常采用的也是 H.264。
如果你追求极致的视频质量(如超清、4K、8K)但不太担心文件大小,那么 MKV 容器配合H.265(HEVC)编码是极佳的选择。