一种基于DSP的视频转码器设计来源:《中国多媒体通信》浏览:1534次文/北京邮电大学通信网络综合研究所陈涛刘勇摘要:介绍了转码技术的原理,针对不同的应用场合分析了转码器的各种实现结构,并提出了在设计转码器时应主要考虑的方面。结合作者所做的实际工作,提出了一种利用DSP实现转码器的方法。同时,具体介绍了实现转码器时所采用的硬件和软件结构。利用实验数据分析了转码器的性能,进而验证了所设计转码器的可行性。最后,展望了未来网络技术和数字多媒体技术的发展,并提出视频转码技术将成为今后视频应用领域中的热点与主流。关键词:转码器DSP码率转码H.264自20世纪90年代以来,伴随着网络技术和数字多媒体技术的迅速发展,音视频编码技术开始走进人们的生活,音视频编码技术发展迅速,多媒体通信技术逐渐呈现了越来越重要的价值。在音视频编码技术快速发展的过程中,各个标准组织针对不同的多媒体应用建立了多种视音频编码标准。如ITU-T和MPEG组织联合针对低比特率双向视频传输应用环境所制定的H.264视频编码标准;MPEG组织面向广播级高质量视频应用环境所制定的MPEG-2视频编码标准以及面向流媒体和交互式多媒体应用环境所制定的MPEG-4视频编码标准等。在许多实时应用中,需要根据不同的多媒体应用终端以各种不同的编码参数将视频数据压缩成为各种不同的编码格式。而这些实时应用通常要求视频数据在各种编码格式之间实现动态实时转换。而音视频转码技术正是在这样的背景下应运而生的。视频转码对压缩的视频码流进行端到端的处理,使得转码后的压缩码流更能适应传输信道带宽以及接收端的要求。视频转码技术能够灵活地支持多种媒体格式,并且具有较高运算能力、低成本和灵活等的特点。它已成为数字多媒体服务发展的一项重要技术。鉴于此,本文对转码技术的主要原理、模块及其特点,以及其中采用的主要技术进行了分析介绍,并在此基础上提出了一种利用DSP实现转码器的设计方法。这种设计方法既考虑到了现实应用中,对低成本、使用灵活方便及便于扩展等特性的需要,又充分考虑到了运算速度、处理精度等重要的性能指标,特别适用于实时转换视频压缩数据的应用。下面我将从视频转码技术的理论基础、视频转码器的实现结构、基于DSP的软硬件框架及实验数据分析等方面对所做的转码器进行分析和介绍。一、视频转码技术视频转码就是将视频信息由一种编码格式转换成另一种编码格式的编码方法。执行视频转码操作的设备叫做视频转码器。视频转码包含两方面含义:(1)在同一视频编码标准中转换,例如将视频数据由一种编码速率转换成另一种编码速率;这种转码方法复杂度低,可操作性强;(2)在不同视频编码标准中转换,将由一种标准压缩的视频数据转换成由另一种标准压缩的视频数据;这种转码方法复杂度高,其实质是一个重新编码的过程,涉及的算法复杂度和系统开销是由转码所需图像质量要求及转码前后两种编码方式的相关度所决定的。最简单的转码器就是将解码器和编码器直接级联(如图1所示),解码器对输入数据解码后再送入编码器进行编码。然而,这种方式计算量太大,并不实用。事实上,视频转码就是在比特率、图像质量、转码速度三者之间取得折衷,针对不同的应用,对这三者赋予不同的优先等级。图1解码器和编码器直接级联的转码器示意图对于移动通信中的应用,分辨率通常较低,比特率也自然较低,对图像质量则要求不高。通常会采取诸如丢弃B帧的方法来减小帧率,二次量化参数也要参考信道带宽而确定,这就要求信源编码和转码过程与信道结合起来。本文所要介绍的转码器主要针对IP网络或移动通信条件下传输视频图像等的应用。因此,对转码后的输出码率及实时性要求较高,而对图像质量则要求不高。二、视频转码器中的主要算法原理1.同类视频转码同类视频转码指把同一种编码标准的视频数据流从适合某一传输环境的压缩形式转换成适合于另一传输环境的压缩形式。此时转码技术用于动态调整视频流码率,来适应不同的网络带宽要求,包括格式转码、码率转码,运动矢量重用以及压缩域转码等。如前所述,本文所要介绍的转码器,主要应用在无线网络、IP网络上实时传输视频数据,并且采用了处理速度快、实时性强的一点对多点类型的结构。因此,转码器中主要有四大模块,即编码模块、解码模块、图像尺寸变换模块以及码率控制模块(如图7所示)。针对这一特点,本文在算法原理方面主要介绍空间分辨率转码、码率转码以及运动矢量重用等三项重要技术。⑴空间分辨率转码空间分辨率转码可分为两类:分辨率由高到低(下采样)和分辨率由低到高(上采样)。通常采用的两种不精确的图像尺寸下采样方法是像素抽取和双线性内插。像素复制、线性插值和近似理想低通滤波器等算法能实现高性能任意变换比例的图像尺寸转码。仿真结果表明滤波器算法的图像质量最好,但运算也最复杂;像素复制算法图像质量最差,但实现最简单快捷;线性插值算法介于二者之间。本文所介绍的转码器,由于处理速度需要,只支持双线性内插的下采样变换。⑵码率转码当传输信道或用户要求的比特率比编码产生的码流比特率更低时,定比特率的码流需要降低比特率。另一方面,通过异步传输模式(ATM)网络传输已编码的变比特率码流,要求动态地控制码流,以便使拥塞期间的丢包最少。在这两种情况下,视频转码器可根据新的信道带宽限制或网络需求,对事先编码后的码流采用必要的码率转换。在码率转码方面,更多的研究集中于有效的转码结构的探讨上,这些结构可分为两大类:开环结构和闭环结构。如图2中虚线框所示,对输入的码流经过可变长解码(VLD)、反量化(Q1)后,得到的DCT系数直接作二次量化(Q2),变长编码(VLC)输出需要的码流,这种方法前、后两次量化误差的叠加会造成无法接受的误码扩散,因此采用闭环结构来避免误差积累,牺牲一定的算法复杂度和存储来获得理想的图像质量。图2⑶运动矢量重用转码器中大约有60%的计算是关于运动矢量MV、运动补偿和模式选择等的计算。而在输入码流中已经包含了运动矢量MV和宏块类型等信息。因此,如图4所示,如果使用输入码流中运动矢量而不重新进行全局运动估算,至少可以节省3倍的计算时间。运动矢量重用避免了运动估值过程,大大降低了转码运算的复杂性,而且它的转码质量与重新进行完全的运动估值的几乎相同。推导新的运动矢量的算法通常有:①平均值算法,即将参考帧中所有相关宏块的运动矢量求平均值再乘以比例因子;②中值算法,即求出参考帧中所有相关宏块的运动矢量的中值,再乘以比例因子;③线性内插,即对各相关宏块的运动矢量进行线性内插;④加权平均,即对所有候选运动矢量进行加权平均;⑤从所有候选运动矢量中选择一个占主要因素的运动矢量。前两种算法对原参考帧中各相关宏块在水平和垂直方向的运动都一致的情况下是可行的,但是当各参考宏块的运动不一致时,这两种方法的性能较差。采用加权平均算法,利用与原始参考帧中对应宏块的所有相关运动矢量来找出所需预测运动矢量,只能够部分解决运动矢量重用问题,得到的视频质量有一定程度的下降,还需要通过小范围的局部搜索提高运动矢量的精确度。本问所介绍的转码器在运动矢量重用方面,采用了中值算法。2.不同类视频转码为提供不同视频压缩编码标准间的互操作性,需要将视频压缩码流从某一种压缩标准转码成为另一种视频压缩标准的码流,称为不同类视频转码。这种转码可以为不同条件的网络间提供透明的连接,一般用于具有相似压缩算法的标准间的转换,如均为基于帧间运动补偿、帧内DCT变换、量化的多种编码标准之间的转码,包括M-JPEG,H.26x,MPEG-1/2/4等。不同类视频转码器的设计思想是在充分分析不同标准间异同的基础上,采用类似于同类码流间视频转码的结构和算法来设计、研究视频转码的基本结构。三、视频转码器的实现1.视频转码的应用框架视频转码的应用框架结构大致可分三类,即客户-转码代理-服务器、一点对多点和视频会议。本文所介绍的转码器主要针对一点对多点的应用框架。如图3所示,这种框架结构是由服务器与编、解码器组组成。其优点在于:如果同时有多个用户向服务器就同一个视频节目发出请求,那么视频转码系统只需解码一次,然后将解码后的视频流输入多个编码器,就能同时满足多个用户的不同需求。同时,与其他两种应用框架相比,这种结构的总计算量较少、实时性较强,尤其在多个客户发出请求时,效果越发的明显。图32.视频转码器的结构视频转码器的典型结构主要有三种,即基于像素域的级连式体系结构、基于像素域的快速级连转码体系结构和基于DCT域的转码体系结构。基于像素域的级连式体系结构是一种最简单的实现视频转码器的结构,它是把输入的压缩视频流完全解码,然后再按照输出格式的要求直接压缩成另一种格式的视频流。但是,这种结构计算复杂度最高,不能满足实时应用的要求;而基于DCT域的转码体系结构是将时间域中的运动估计公式转化为DCT域中的公式,而不用先进行反DCT变换,在时间域中进行运动估计,再进行DCT变换,虽然也能起到降低计算量的目的,但灵活性不高,特别是在改变运动矢量、帧编码类型、编码速率及分辨率等情况下;基于像素域的快速级连转码体系结构直接使用了输入码流中的运动矢量而不重新进行全局运动估算,减少了大量的运算时间,且具有较高的灵活性(如图4所示)。图4如前所述,视频转码器要在比特率、图像质量、转码速度三者之间取得折衷。所以,对于一点对多点类型的转码器,更多的考虑是如何最大限度的提高其转码速度,并兼顾其图像质量。因此,基于像素域的快速级连转码体系结构是我们的最佳选择。这种结构既能保证转码速度,提高实时性,又能保证一定的图像质量,满足移动通信条件下的视频应用等。四、视频转码器的设计方案1.硬件设计本文所要介绍的视频转码器,其硬件部分的设计如图5所示。其中MSC8122是一块Freescale生产的高性能DSP,它通过调用Flash中储存的算法程序,处理输入的视频码流,并以DMA的方式将处理完的码流写入扩展内存中,最终通过网络接口输出转码后的数据。图52.软件设计如图6所示,转码器软件部分采用了自上而下的模块化结构,应用层根据输入码流和输入、输出信道条件发出指令,调用相应的编、解码及码率调整等模块,完成转码工作。其具体的工作流程如图7所示,应用层根据需要产生所要转码的配置文件,文件中包含了转码的方向(如H.263-H.264,H.264CIF-H.264QCIF等)、输入、输出帧率和码率等信息;转码器读取配置文件,获得配置文件中的必要参数,并完成相应编、解码器的参数设置;调用解码器,从输入码流中获取残差数据、运动矢量、宏块信息等重要数据;调用尺寸变换模块,完成图像的尺寸变换(如CIF-QCIF);调用编码器和码率控制模块,完成视频编码并输出。这种结构的软件设计具有可扩展性强、灵活、运算速度快、支持多用户的转码请求、可图6图7升级性强及便于维护等特点。图7所示的应用层不是本文所要讲述的重点,其功能由已制作好的各种配置文件所代替。转码器工作时,从读取配置文件开始,由已经在配置文件中设置好的参数配置相应的编、解码器及尺寸变换模块,完成转码处理。五、小结本文介绍了利用DSP实现视频转码器的方法,并结合转码器的结构与转码器中所采用的主要算法原理分析了设计转码器时应主要考虑的方面。同时,具体介绍了实现转码器时所采用的硬件和软件结构。利用实验数据分析了转码器的性能,进而验证了所设计转码器的可行性。当然,所设计的转码器也存在一定的局限性,突出表现在由于将解码后的运动矢量直接求中值用于编码,导致在有些运动较剧烈的视频内容或输入输出图像尺寸不同时或不同类视频转码时,出现预测不准的现象,最终导致图像质量有所下降。而解决图像质量下降的问题,最好的办法就是在解码获得运动矢量的基础上,在一个很小的搜索范围内再次进行运动估计,计算出最佳的运动矢量并将其用于运动补偿。展望未来,网络技术和数字多媒体技术的迅速发展必将加速音视频编码标准的发展。视频转码技术作为将视频信息由一种编码格式转换成另一种编码格式的编码方法必将随着其技术的日益完善而得到更加广泛应用与发展。视频转码技术也必将成为今后视频应用领域中的热点与主流。薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁