编解码器(codec)指的是一个能够对一个信号或者一个
数据流进行变换的设备或者程序。这里指的变换既包括将信号或者数据流进行编码(通常是为了传输、存储或者加密)或者提取得到一个编码流的操作,也包括为了观察或者处理从这个编码流中恢复适合观察或操作的形式的操作。编解码器经常用在
视频会议和流媒体等应用中,通常主要还是用在广电行业,作前端应用。
编解码器简介
经过编码的音频或者视频原始码流经常被叫做“Essence”(有译作“本体”,“精”),以区别于之后加入码流的元信息和其它用以帮助访问码流和增强码流
鲁棒性的数据。
大多数编解码器是有损的,目的是为了得到更大的压缩比和更小的文件大小。当然也有无损的编解码器,但是通常没有必要为了一些几乎注意不到的的质量损失而大大增加编码后文件的大小。除非该编码的结果还将在以后进行下一步的处理,此时连续的有损编码通常会带来较大的质量损失。
很多多媒体
数据流需要同时包含音频数据和视频数据,这时通常会加入一些用于音频和视频数据同步的
元数据。这三种数据流可能会被不同的程序,进程或者硬件处理,但是当它们传输或者存储的时候,这三种数据通常是被封装在一起的。通常这种封装是通过
视频文件格式来实现的,例如常见的*.
mpg, *.
avi, *.mov, *.mp4, *.rm, *.ogg or *.tta. 这些格式中有些只能使用某些编解码器,而更多可以以容器的方式使用各种编解码器。
编解码器对应的英文“codec”(coder和decoder简化而成的合成词语)和
decode通常指软件,当特指硬件的时候,通常使用“endec”这个单词。
硬件编解码器有
标清编解码器和高清编解码器。所谓标清,英文为“Standard Definition”,是
物理分辨率在
720p以下的一种视频格式。720p是指视频的垂直分辨率为720线
逐行扫描。具体的说,是指分辨率在400线左右的VCD、DVD、电视节目等“标清”视频格式,即标准清晰度。而物理分辨率达到720p以上则称作为高清,(英文表述High Definition)简称HD。关于高清的标准,国际上公认的有两条:视频垂直分辨率超过720p或
1080i;视频宽纵比为16:9。
组成
H.261定义的编解码器由信源编码器、视频复合编码器、传输缓冲器、传输编码器以及
编码控制部分组成。整个编码过程的核心仍在信源编码部分。编解码器框图如图1所示。
视频编解码器原理
视频处理
发端的图像信号是由摄像机提供的复合电视信号(模拟信号),经过数字视频转换,分离出的亮度(灰度)信号和两个色度信号。这三路信号经A/D变换,将模拟信号转换为数字信号,每个像素点为8bit。数字化后信号经预处理,滤除信号中的噪声,进入CIF格式变换电路,成为CIF标准格式,然后进入信源编码器进行
图像压缩编码。预处理的目的是消除信号中的背景噪声,从而利于提高图像的清晰度。当然,预处理还可解决亮度与色度信号串扰,减小叠折干扰的作用。
信源编码器
信源编码器是编码器的关键部分。ITU—T H.261建议规定了采用预测编码和变换编码的混合编码方法。
(1)预测编码
由于会议电视所摄取的人物的活动量很小,必然会使每幅图像内容相差不大,或者说某幅图像(帧)与它前面一幅图像(帧)相关性很强。利用这个相关性,首先把一幅完整内容的图像传到对方,后面的每幅画面,只需把不同的内容传过去,相同的内容就不再传到对方。例如,发言者的完整形象首幅画面传送到对方,以后的每幅画面,只需传递他的嘴部的动作内容,从而可使传输的码率大大下降。一幅图像是由许多像素点组成的,这些像素点包含了亮度及色差信号。从易于编码的角度考虑,把每幅画面分成许多小方块,每个块由16像素×16像素点亮度块和两个8像素×8像素点的色差块组成,我们将它称为“宏块”MB(Macroblock)。
若将画面内变动部分的内容传到对方,那么,在前一帧图像中与当前帧的宏块所对应的位置附近,找到一个与当前宏块的亮度块最近的宏块,并作为当前宏块(MB)的预测值,然后将当前的画面内的宏块与最佳预测块相减,得到一个预测误差,仅对误差块进行编码即可。
所谓编码,更确切地说是压缩,即去掉一些多余的信息,保留必要的信息。对于预测编码的预测误差块,不直接进行编码,而是采取一种称为离散余弦变换编码方法,也称DCT变换法。换句话说,就是把图像数据(预测误差块)变换到频率域中进行编码,达到图像数据压缩的目的。这是因为,图像数据经过变换处理后,相邻像素之间的相关性下降,多余的信息大部分去掉不传送,将有用的且不相关的信息保留下来。采用DCT变换的另一因素是在频率域在进行编码时,受噪声的影响较小。
(3)量化器
为了在一定的主观保真度图像的前提下,去掉那些对人的视觉效果影响不大的信息,以进一步地压缩码率,故需采用量化器。量化器除在A/D模拟/数字变换中应用外,通常也用于D/D数字/数字变换,目的是进行数据压缩。以下仅对D/D变换作一简介。
量化器采用分层量化,即选用不同的步长,针对DCT变换后的不同系数进行量化。对其直流(DC)系数采用一种固定的步长,对其交流系数(AC)采用2~62步长,其步长范围受后面的
缓冲存储器反馈信号的控制。
视频复合编码器
数据视频信号经信源编码器进行压缩后变换成视频数据,然后送入视频复合编码器。
复合编码器首先对视频数据作进一步压缩。即按哈夫曼(Huffman)编码原理进行变字长编码。其方法是对出现概率大的灰度(亮度)信号进行短的码字编码,对出现概率小的信号赋予长的码字,平均的结果,使视频数据流总的码字最短,从而达到进一步压缩的目的。
在复合编码器中,还有一些辅助信号。例如指示信号“发送/不发送”标志,其作用是告诉对方的解码器,在一幅图像中,哪些宏块要发送,哪些宏块不发送。需要发送的宏块,又分帧内和帧间两种编码方式。帧内预测编码是利用一帧(一幅图像)内已经传送的相邻像素来求当前像素的预测值;帧间预测编码在前面已提到。
压缩质量
有损编解码
在软件界有许多相对更加流行的编解码器是有损的,意味着它们压缩过程牺牲了一定的质量。通常这种压缩实际上同未被压缩的声音或图像没区别。更小的数据集缓解了相对高昂的存储器。较低的数据率也降低了花销并在数据传输过程中提升了品质。
无损编解码
也有许多的无损压缩,特别应用于在需要原始流中所有信息时压缩模式下获取数据。如果保留数据流的原始品质比削减相应的更大数据更加重要,那么无损压缩更佳。连续使用多种编解码器或者编码体系也会显著的降低质量。不断下降的存储空间开销和网络带宽正使得有损压缩的需求下降。