编解码器(CODEC)是流媒体市场的氧气!没有编解码器,就没有流媒体。从拍摄视频到编辑,再到对流媒体文件进行编码以交付,编解码器参与了整个过程的每一步。许多视频制作人也涉足DVD-ROM和蓝光市场,以及广播和编解码器也在其中发挥了作用。
尽管您可能知道编解码器是什么,但您真的知道编解码器吗?当然,阅读本文后,您的状况将不如您所愿。首先,我们将介绍有关编解码器工作原理的基础知识,然后,我们将研究各种编解码器所扮演的不同角色。接下来,我们将研究H.264如何成为当今使用最广泛的视频编解码器,并以音频编解码器的快速讨论作为结束。
编解码器是压缩技术,具有两个组件,一个用于压缩文件的编码器和一个用于解压缩的解码器。有用于数据(PKZIP),静止图像(JPEG、GIF、PNG),音频(MP3、AAC)和视频(Cinepak、MPEG-2、H.264、VP8)的编解码器。
有两种编解码器:无损和有损。诸如PKZIP或PNG之类的无损编解码器在解压缩后会复制与原始文件完全相同的文件。有一些无损的视频编解码器,包括Apple Animation 编解码器和Lagarith编解码器,但无法将视频压缩到足够低的数据速率以进行流传输。
与无损编解码器相比,有损编解码器在解压缩时会产生原始文件的传真,但不会产生原始文件的传真。有损编解码器具有一个不变的折衷方案-数据速率越低,解压缩的文件看起来(或听起来)就越像原始文件。换句话说,压缩得越多,损失的质量就越多。
有损压缩技术使用两种类型的压缩:帧内和帧间压缩。帧内压缩本质上是应用于视频的静止图像压缩,每个帧都在不参考任何其他帧的情况下进行压缩。例如,Motion-JPEG仅使用帧内压缩,将每个帧编码为单独的JPEG图像。该DV编解码器还像DVCPRO-HD一样仅使用帧内压缩,实际上将每个HD帧分为四个SD DV块,所有这些块均仅通过帧内压缩进行编码。
相反,帧间压缩使用帧之间的冗余来压缩视频。例如,在会说话的情况下,大部分背景保持不变。帧间技术一次存储静态背景信息,然后仅将更改的信息存储在后续帧中。帧间压缩比帧间压缩要有效得多,因此大多数编解码器都经过优化,可以搜索和利用帧之间的冗余信息。
早期的基于CD-ROM的编解码器(如Cinepak和Indeo)使用两种类型的帧进行此操作:关键帧和增量帧。关键帧存储整个帧,并且仅通过帧内压缩进行压缩。在编码期间,将增量帧中的像素与先前帧中的像素进行比较,并删除了冗余信息。每个增量帧中的剩余数据也可以根据需要使用帧内技术进行压缩,以满足文件的目标数据速率。
图1.基于CD-ROM的编解码器部署的关键帧和增量帧。
这在图1中显示,该图是左上方显示的画家的谈话视频。在视频过程中,帧中唯一变化的区域是嘴巴、雪茄和眼睛。四个增量帧仅存储已更改的像素块,并在解压缩期间参考关键帧以获取冗余信息。
在带有动画文件的这种情况下,帧间压缩将是无损的,因为您可以使用存储在关键帧和增量帧中的信息来一点一点地重新创建原始动画。尽管现实世界中的视频操作并非没有损失,但它非常高效,这解释了为什么有声谈话视频的编码质量要比足球比赛或NASCAR比赛高得多。
自从CD-ROM时代以来,帧间技术已经发展起来,大多数编解码器(包括MPEG-2,H.264和VC-1)现在使用三种帧类型进行压缩:I帧,B帧和P-框架。I帧与关键帧相同,并且仅使用帧内技术进行压缩,从而使其成为最大,效率最低的帧类型。
B帧和P帧都是增量帧。P帧是最简单的,并且可以在任何先前的I帧或P帧中利用冗余信息。B帧更为复杂,并且可以在任何先前或后续的I,B或P帧中利用冗余信息。这使得B帧在这三种帧类型中效率最高。
这些多种帧类型存储在一组图片或GOP中,该图片组从每个I帧开始,包括直到但不包括后续I帧的所有帧。使用所有三种帧类型的编解码器通常被称为“长GOP格式”,主要是在非线性编辑系统中使用编解码器时。这突出了有损压缩技术的第二个基本折衷:解码复杂度的质量。也就是说,编解码器提供的质量越高,解码的难度就越大,尤其是在诸如视频编辑之类的交互式应用程序中。
非线性编辑系统中使用的第一个long-GOP格式是HDV,这是一种基于MPEG-2的格式,请想象一下这种方法带来的复杂性。例如,使用DV和Motion-JPEG,每个帧都是完全自参考的,因此您可以将编辑播放头拖动到视频中的任何帧,并且可以实时解压缩。
但是,对于基于MPEG-2的HDV,如果将播放头拖动到B帧,则非线性编辑器将必须解压缩该B帧引用的所有帧,并且这些帧可以位于该B之前或之后时间轴中的帧。在当今功能不足的计算机系统上,大多数使用只能处理2GB内存的32位操作系统,长GOP格式会导致大量延迟,从而使编辑无响应。
随着摄录机越来越依赖诸如MPEG-2和H.264之类的长GOP格式存储数据,一种新型的编解码器(通常称为中间编解码器)出现了。这些包括Cineform,Inc.的Cineform,Apple ProRes和Avid DNxHD。这些编解码器仅使用帧内压缩技术来获得最大的编辑响应速度,并使用很高的数据速率来保持质量。
这些中间编解码器强调了一个事实,尽管存在一些交叉,但通过其功能识别编解码器非常有用,其中包括以下类:
其中包括DV和DVCPROHD中使用的Motion-JPEG,索尼XDCAM HD和HDV中使用的MPEG-2,以及AVCHD中使用的H.264,以及许多数字SLR相机。编解码器的作用是在满足机载存储机制的数据速率要求的同时,以尽可能高的质量进行捕获。
如前所述,在这个角色中,这些编解码器旨在优化编辑响应度和质量。
这些包括用于DVD,广播和卫星的MPEG-2,用于蓝光的MPEG-2,VC-1和H.264,以及用于流传输的H.264,VP6,WMV,WebM和多种其他格式。在此角色下,编解码器必须与交付平台规定的数据速率相匹配,在流传输的情况下,该数据速率远低于用于采集的速率。
将编解码器与容器格式区分开来很重要,尽管有时它们使用相同的名称。简而言之,容器格式或包装器是一种文件格式,可以包含特定类型的数据,包括音频,视频,隐藏式字幕文本以及关联的元数据。尽管有一些通用的容器格式,例如QuickTime,但是大多数容器格式都针对生产和分发管道的一个方面,例如MXF用于在便携式摄像机上进行基于文件的捕获,FLV和WebM用于流式处理Flash和WebM内容。
在某些情况下,容器格式具有单个或主要编解码器,例如Windows Media Video和WMV容器格式。但是,大多数容器格式可以输入多个编解码器。QuickTime的用途可能最广泛,一些摄录机以QuickTime容器格式捕获MPEG-2 / H.264视频,并且在iTunes上以MOV扩展名分发了许多视频。
潜在的混乱领域涉及MPEG-4,它既是容器格式(MPEG-4第1部分)又是编解码器(MPEG-4第2部分)。从技术上讲,至少从ISO角度而言,H.264还是MPEG-4编解码器(MPEG-4第10部分),它已在很大程度上取代了MPEG-4编解码器的使用。作为一种容器格式,MP4文件可以包含使用MPEG-2,MPEG-4,VC-1,H.263和H.264编解码器编码的视频。
但是,用VC-1编码MP4文件,QuickTime Player或任何iOS设备都将无法播放该文件。因此,在制作要分发的文件时,选择与目标查看器的播放功能兼容的编解码器和容器格式至关重要。
从历史上看,视频编解码器已经在多个独立的路径上发展了,有趣的是,这些路径中的大多数都导致了H.264,这就是为什么编解码器在今天如此蓬勃发展的原因。一种途径是通过国际标准组织,该组织的标准影响摄影,计算机和消费电子市场。ISO于1993年发布了第一个视频标准,即MPEG-1,随后是1994年的MPEG-2、1999年的MPEG-4和2002年的AVC / H.264。
下一步是通过国际电信联盟,它是联合国负责信息和通信技术问题的主要机构,并为电话,广播和电视市场的标准做出了贡献。国际电联于1984年首次发布了与视频会议相关的第一标准,其中H.261于1990年推出,H.262于1994年推出,H.263于1995年推出,H.264与ISO共同开发,在2002年。
如我们所见,数码摄像机最初使用DV编解码器,然后过渡到MPEG-2,而MPEG-2仍然占有很大份额。AVCHD是基于H.264的格式,使用此格式的专业摄录机越来越受欢迎,而使用基于H.264的AVC-Intra格式的摄录机也在日益普及。H.264完全拥有像佳能7D这样的数码单反相机市场,几乎所有便携式摄像机都在其中使用H.264。
在交付方面,尽管大多数有线电视广播仍然是基于MPEG-2的,但是H.264在CATV中获得了发展,并已广泛用于卫星广播中。流媒体市场首先由专有编解码器控制,最初是RealNetwork的RealVideo,然后是Microsoft的Windows Media Video,然后是On2的VP6,而Sorenson Video 3是主要的QuickTime编解码器。2002年,Apple的QuickTime 6首次推出了MPEG-4支持,并于2005年在QuickTime 7中添加了H.264。同年,发布了首款具有视频功能的iPod,同时也支持H.264(和MPEG-4)。2007年,Adobe在Flash中增加了对H.264的支持,随后在2008年又增加了Microsoft Silverlight的支持。
H.264不独占主导的市场是中间编解码器市场,该市场不适用于长GOP格式。否则,几乎所有其他市场(从iPod到卫星电视)都主要由H.264编解码器驱动。
最后,由于大多数视频也是用音频捕获的,因此音频组件也必须得到解决。用于采集和编辑的最广泛使用的音频格式是PCM,它表示脉冲编码调制,在Windows上通常以WAV或AVI格式存储,在Mac上通常以AIFF或MOV格式存储。PCM被认为是未压缩的,因此可以更恰当地将其表征为文件格式,而不是编解码器。为了保持质量,大多数中间编解码器仅通过便携式摄像机传递的未压缩音频。
大多数传送格式都有相关的有损音频编解码器,例如MPEG音频和DVD上的AC-3杜比数字压缩。大多数早期的流技术,例如RealVideo和Windows Media,都具有专有的音频组件,因此RealAudio随RealVideo文件一起提供,Windows Media Audio和Windows Media Video也是如此。
当Adobe将VP6编解码器与MP3音频编解码器配对以进行Flash分发时,这种动态变化最为明显。用于H.264视频的基于标准的音频编解码器是高级音频编码(AAC)编解码器,而WebM将VP8编解码器与开源Vorbis编解码器配对。
在线视频制作和发行的所有阶段都涉及编解码器,因此了解它们的操作及其各自的作用非常重要。