视频转码技术及转码实现详解
0赞
本文简单介绍了视频转码技术的定义、分类及实现手段,重点分析了如何在视频工程中使用转码技术,包括转码技术的使用方式及其优势所在。分析了在流方式和文件方式下如何使用转码技术。通过对移动非线性编辑系统远程传输视频数据和节目制作网络素材集中上载两个工程实例的分析,探讨了转码系统工作的灵活性和通用性。阐明了作者对在专业视频领域内,配合计算机设备及网络架构,使用转码技术前景的看法。
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 解码器解码得出的运动矢量的信息。
我们可以看出,使用不同的转码算法在不同需求的编码转换时,可以得到不同的时间及系统消耗复杂度。这些不同复杂度算法的是否采用取决于用户对工作任务的要求。比如工作任务需要实时获得转码结果,要求高可靠性,并且对转码前后的数据的编码方式及码流指定不变。那么我们可以采用高效的转码算法,必要时牺牲一些图像质量,将算法固化在硬件芯片板卡上,从而满足任务需求。如果工作任务对转码同步性要求并不高,不要求实时输出,但对图像质量有很高的要求,我们可以采用一些效率较低,但图像质量损失较小的转码算法。可以将算法固定在硬件芯片中,也可以使用通用的计算机运算系统、存储系统和数据交换系统,使用软件算法进行转码工作,这些方式的具体应用方式在本文的后半部分会详细介绍。
下面来看一下这些转码工作是如何实现的。
一、传统面向流方式的视频转码
由于视频数据自身的特点,数据量的庞大和线性的存储格式,长期以来传统的视频编码转换都是面向数据流进行操作。其工作原理如一个制式转换器一样,输入端输入连续的 NTSC 制信号,同时在输出端输出实时的 PAL 制信号。
这种方式的优点是可以以实时或者接近实时的方式输出转码结果,转码算法固化在板卡芯片上,转码工作基本上是由硬件完成,稳定性好。但其缺点也是显而易见的,转码单元针对特定的源编码方式和目标编码方式,用户基本无法对码流的大小和附加信息进行控制,灵活性较差。而为了满足实时处理的要求,有时必须需要牺牲一些图像的质量。另外的缺点就是这种基于流方式视频转码,输入和输出基本同步,不能以快于实时的速度进行编码转换。
随着计算机技术的日益进步,非线性存储手段日益完善,我们可以通过文件的方式存储视频数据。这样就为视频数据提供了新的,更加灵活高效的转码手段。
二、使用计算机及其相关设备面向文件方式进行视频转码
使用计算机设备改变单幅图像的编码方式已经是一个非常成熟的技术,但受到计算机运算能力和存储能力的限制,很长一段时间内,对于符合广播级要求的专业视频数据的编码转换处理一直没有什么好的解决方案。但随着计算机设备运算能力的增强和存储容量的日益扩大、其数据接口已经可以满足视频数据处理的需求,使用计算机及其相关设备处理视频数据已经成为现在的主流,同时也给视频转码提供了更好性价比的平台。我们可以使用计算机设备,利用软件手段,进行灵活高效的转码工作。
我们来看一看如何使用计算机系统进行转码工作。
这种利用计算机设备进行转码的工作方式具有非常大的灵活性,可以对以文件方式或以流方式存在的视频数据进行处理。其本质均是在计算机设备的存储器内开设足够大数据的缓存地带,将所需处理的视频数据文件或流分成许多大小适合的片段,放入其中。由软件提供转码算法,并控制计算机系统进行转码工作。图 -7 中所示的数据接口的概念也非常的灵活,它可以使计算机设备的外部接口,如千兆以太、 Fiber Channel 通道,也可以是其本身的内置存储通道接口。我们来看一下他们是如何工作的。
计算机设备先将需转换编码方式的视频数据文件放入外部存储或本地存储设备中。然后将该视频文件拆分成适合计算机设备处理的数据片段,放入高速缓存中,由软件提供转码算法,利用计算机设备的处理能力对数据片段进行编码转换。转换完成后将数据片段送入指定区域存储,同时高速缓存区获取新的数据片段。循环这种方式直到所有的拆分数据片段均得到了转码处理,合并转码完成的视频数据文件片段,输出我们所需要得到的视频数据。
这种拆分数据的方式同样也适合于以流方式存在的视频数据,比如我们可以使用数据接口直接与数字视频数据流连接,不经过任何的编解码将其存储到计算机转码设备的指定缓存区域,变线性的数据流存在方式为非线性的数据存储方式,然后可以使用图— 8 所示的数据拆分方式进行转码处理,经合并后,可以选择文件方式或依然保持流方式的数据输出。
采用这种方式的转码工作,具有很强的灵活性,数字信号接口并不需要识别接收到的数据流为何种格式编码、封装如何。只需将数据如实记录到缓存区,由转码软件决定采用何种转码手段,针对何种数据流的编码格式和封装方法进行编码转换工作。如我们在接口硬件标准相同的情况下,可以对 DV 流、 TS 流、 FTP 文件流等多种方式的数据流输入进行编码转换,并不需要更换硬件接口和编解码设备,只需更改转码软件的转码处理手段及控制手段即可。