- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
视频转码技术及转码实现详解
本文简单介绍了视频转码技术的定义、分类及实现手段,重点分析了如何在视频工程中使用转码技术,包括转码技术的使用方式及其优势所在。分析了在流方式和文件方式下如何使用转码技术。通过对移动非线性编辑系统远程传输视频数据和节目制作网络素材集中上载两个工程实例的分析,探讨了转码系统工作的灵活性和通用性。阐明了作者对在专业视频领域内,配合计算机设备及网络架构,使用转码技术前景的看法。
1 引言
从一个简单的问题开始我们的讨论:对于一个视频工程技术人员而言,工作中所需面对的视音频编码方式有多少种?
以编码和压缩方式的大类而言,我们需要面对 MoTIon-JPEG 、 MPEG 、 DV 、 H.261H.263 等不同系列的压缩编码方式;每一种编码方式我们又需面对不同的子类或子级,如讨论 DVB ,经常就要涉及 MPEG-2 MP@ML 和 MP@HL ;不同厂商的视频产品,也根据各自情况采用不同的 帧内、帧间编码关系及不同的码流; GOP 长度、 I 、 B 、 P 帧、 50 、 25 Mbps 等名词现在已经成为视频产品技术参数的重要组成部分;每个厂商在视频数据的封装上也有各自的编码方式,不同厂商开发的视频服务器,如 Grass Valley 的 Profile 系列服务器和 SONY 的 MAV 系列的服务器,虽然可以支持以相同 GOP 长度、相同码流的编码方式产生 MPEG-2 视频文件,但由于在文件封装上的不同,二者产生的视频文件是无法相互直接使用的,这种情况在数字视频领域相当普遍,有时甚至在同一厂商所开发的不同系列的视频产品中,数据流或文件也是无法相互识别的。
我们不想在这里探讨哪一种编码压缩方式更好、更优秀,本文想要讨论的是:在采用不同压缩编码方式的视频设备之间如何高质量、高效效率的共享和交换视音频数据。
现在交换视频数据的普遍做法是将编码完成的视频数据解压缩为基带信号,根据情况进行再编码,并加以适当的封装,使用相同的接口协议,以流的方式,在不同的视频产品之间进行传输共享。如在不同的视频产品间使用 SDI 连接,不论设备内部使用何种编码方式,均通过内置的 SDI 编解码器将视频数据编解码为标准的 SDI 数据流,进行传输。
无论设备 A 内部的采用何种压缩编码方式,在向设备 B 传输视频数据时,首先通过其内置的数据解码单元将视频数据解码送至 SDI 编码器,封装转换成 SDI 数据流,再通过 SDI 接口传输给设备 B 的 SDI 接口,设备 B 将其通过 SDI 解码器,送至其本身的数据编码单元,对视频数据重新编码进行处理或存储。
这种数据交换的前提,是不同的设备存在遵从相同协议的接口,如 SDI 接口,并具备相应的编解码硬件设备,使用一种可以共同识别的数据流作为中介进行视音频数据的交换。
我们换一个角度来看,这种方式本身可以看成是一个编码方式转换,即转码的过程。它将设备 A 中编码处理的视频数据解码,通过 SDI 编解码器转换成 SDI 流,传输给设备 B ,再将其传换成为设备 B 所使用的数据编码方式进行处理和存储。
在这种情况下,如果我们可以使用直接的转码手段,将基于设备 A 编码方式的视频数据转换为设备 B 可以识别并使用的数据编码格式,为设备 B 处理或存储,可以减少重复编解码所带来的设备开销和信号质量下降,并且可以利用多种的传输通道,而不局限于指定的接口通道,可以大大的提高工作效率。
这正是本文想要和大家探讨的,如何灵活的利用转码方式,在基于不同编码方式的设备间共享视频数据,提高工作效率,同时讨论在工程方面的可能会遇到的问题及解决方案。
2 视频转码技术
视频转码技术,顾名思义就是在通过某种手段改变现有视频数据的编码方式。视频转码技术使用的目的不同,其实现的手段也各不相同。大致上可以分为两类:
一、不同编码格式之间的视频数据转码
不同编码格式之间的数据转码,指通过转码方法改变视频数据的编码格式。通常这种数据转码会改变视频数据的现有码流和分辨率。
例如我们可以将基于 MPEG-2 格式的视频数据转换为 DV 、 MPEG-4 或其它编码格式,同时根据其转码目的,指定转码产生视频数据的码流和分辨率。我们可以将 MPEG-2 全 I 帧 50Mbps 的视频源数据转换为 25Mbps 码流的 DV 格式数据,用于笔记本移动编辑系统,同时产生一个 300*200 低分辨率的 MPEG-4 文件,使用 REAL 或者微软的 WMV 格式进行封装,通过互联网络传输至主管领导处用于审看。
这种转码方式设计的算法较为复杂,其实质上是一个重新编码的过程,涉及的算法复杂度和系统开销,是由转码所需图像质量要求及转码前后两种编码方式的相关度所决定的。
二、相同编码格式之间的视频数据转码
相同编码格式的数据转码,指不改变压缩格式,只通过转码手段改变其码流或头文件信息。根据其使用目的,可分为改变码流和不改变码流两种。
如我们可以将 MPEG-2 全 I 帧 50Mbps 码流的视频数据转码为 MPEG-2 IBBP 帧 8Mbps 码流的视频数据,直接用于播出服务器用于播出。或者我们将基于 SONY 视频服务器头文件封装的 MPEG-2 全 I 帧 50Mbps 码流的视频文件,改变其头文件和封装形式,使之可以在给予 MATROX 板卡的编辑系统上直接编辑使用。
这种转码方式的复杂度要小于不同编码格式转码的复杂度,而且对视频工程上而言,更加具有可操作性。
3 视频数据转码的实现
视频数据不同编码之间的相互转化有很多算法可以实现,许多运动图像专家对此也作了深入的研究,针对不同的编码方式提出了相当多可行的方案。这些方案共同的特点就是充分利用所需相互转换编码之间的共同特征,尽量减少编解码所带来的图像质量损失,同时达到时间和资源消耗的平衡。
如我们将一个 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 解码器解码得出的运动矢量的信息。
我们可以看出,使用不同的转码算法在不同需求的编码转换时,可以得到不同的时间及系统消耗复杂度。这些不同复杂度算法的是否采用取决于用户对工作任务的要求。比如工作任务需要实时获得转码结果,要求高可靠性,并且对转码前后的数据的编码方式及码流指定不变。那么我们可以采用高效的转码算法,必要时牺牲一些图像质量,将算法固化在硬件芯片板卡上,从而满足任务需求。如果工作任务对转码同步性要求并不高,不要求实时输出,但对图像质量有很高的要求,我们可以采用一些效率较低,但图像质量损失较小的转码算法。可以将算法固定在硬件芯片中,也可以使用通用的计算机运算系统、存储系统和数据交换系统,使用软件算法进行转码工作,这些方式的具体应用方式在本文的后半部分会详细介绍。
来源:21IC电子网