视频转码技术

发布时间:2024-05-19 15:59:16 作者:汉语成语

视频转码技术,顾名思义就是在通过某种手段改变现有视频数据的编码方式。视频转码技术使用的目的不同,其实现的手段也各不相同。现在交换视频数据的普遍做法是将编码完成的视频数据解压缩为基带信号,根据情况进行再编码,并加以适当的封装,使用相同的接口协议,以流的方式,在不同的视频产品之间进行传输共享。如在不同的视频产品间使用SDI连接,不论设备内部使用何种编码方式,均通过内置的SDI编解码器将视频数据编解码为标准的SDI数据流,进行传输。

引言

从一个简单的问题开始我们的讨论:对于一个视频工程技术人员而言,工作中所需面对的视音频编码方式有多少种?

以编码和压缩方式的大类而言,我们需要面对MoTIon-JPEG、MPEG、DV、H.261/H.263等不同系列的压缩编码方式;每一种编码方式我们又需面对不同的子类或子级,如讨论DVB,经常就要涉及MPEG-2MP@ML和MP@HL;不同厂商的视频产品,也根据各自情况采用不同的帧内、帧间编码关系及不同的码流;GOP长度、I、B、P帧、50、25Mbps等名词现在已经成为视频产品技术参数的重要组成部分;每个厂商在视频数据的封装上也有各自的编码方式,不同厂商开发的视频服务器,如GrassValley的Profile系列服务器和SONY的MAV系列的服务器,虽然可以支持以相同GOP长度、相同码流的编码方式产生MPEG-2视频文件,但由于在文件封装上的不同,二者产生的视频文件是无法相互直接使用的,这种情况在数字视频领域相当普遍,有时甚至在同一厂商所开发的不同系列的视频产品中,数据流或文件也是无法相互识别的。

编码压缩

无论设备A内部的采用何种压缩编码方式,在向设备B传输视频数据时,首先通过其内置的数据解码单元将视频数据解码送至SDI编码器,封装转换成SDI数据流,再通过SDI接口传输给设备B的SDI接口,设备B将其通过SDI解码器,送至其本身的数据编码单元,对视频数据重新编码进行处理或存储。

这种数据交换的前提,是不同的设备存在遵从相同协议的接口,如SDI接口,并具备相应的编解码硬件设备,使用一种可以共同识别的数据流作为中介进行视音频数据的交换。

我们换一个角度来看,这种方式本身可以看成是一个编码方式转换,即转码的过程。它将设备A中编码处理的视频数据解码,通过SDI编解码器转换成SDI流,传输给设备B,再将其传换成为设备B所使用的数据编码方式进行处理和存储。

在这种情况下,如果我们可以使用直接的转码手段,将基于设备A编码方式的视频数据转换为设备B可以识别并使用的数据编码格式,为设备B处理或存储,可以减少重复编解码所带来的设备开销和信号质量下降,并且可以利用多种的传输通道,而不局限于指定的接口通道,可以大大的提高工作效率。

实现

视频数据不同编码之间的相互转化有很多算法可以实现,许多运动图像专家对此也作了深入的研究,针对不同的编码方式提出了相当多可行的方案。这些方案共同的特点就是充分利用所需相互转换编码之间的共同特征,尽量减少编解码所带来的图像质量损失,同时达到时间和资源消耗的平衡。

如我们将一个MPEG-2的视频数据转换成MPEG-4的视频数据,当然可以采用的方法是先将MPEG-2的视频解压缩成单帧的图像序列,再将其重新压缩编码成为MPEG-4的视频数据

但这种转码方式的运算复杂度的使用SDI数据流作为中介的运算复杂度并没有什么区别。我们可以通过一些方法提高转码的效率,降低运算复杂度,比如MPEG-2和MPEG-4在其编码算法上有很多相通的地方,在DCT变换,MC运动补偿,MV运动补偿等方面有许多可以公用的地方,我们并不需要将其完全解码成独立的图像序列,可利用不同编码方式间的相关性进行转码工作

MPEG-2视频数据中所有的头信息被解码后都直接送到MPEG-4编码器中进行编码,其中少数头信息需要调整,以适应新的编码格式。而DCT系数和MV信息被重用,省去了运动估计和DCT的系统消耗。同时MPEG-4做运动补偿的时候,也可以直接利用MPEG-2解码器解码得出的运动矢量的信息。

转码软件

不同的转码软件有其各自特点,但不外乎有以下几个功能模块组成:数据接口模块、硬件接口模块、存储管理模块、转码算法模块、数据处理模块、控制管理模块和用户界面模块。

每个模块各自负责软件工作的一个或几个方面:数据接口模块负责处理数据的输入和输出,硬件接口模块负责与计算机硬件驱动程序通信,存储管理模块负责内村等存储空间的分配,转码算法模块提供转码处理工作的算法手段,数据处理模块进行转码的具体数据处理,控制管理模块进行整个转码工作的控制和信息处理,用户界面模块提供用户与转码软件的交互,提供用户对转码的编码方式、码流及其它的一些软件提供的选项进行控制。

转码算法模块可以固化到转码软件中,也可以以插件的方式存在。当转码软件处理不同的编码转换任务时,根据需要使用不同的转码算法插件,可以在不改变其它功能模块配置的情况下,灵活的扩展软件功能。