快速转码(精选7篇)
快速转码 篇1
0引言
H.264/AVC具有比先前的编码标准(如MPEG-2)更优异的性能,其编码灵活多变,可以满足从低码率视频领域(如手机)到高码率视频领域(如高清晰度电视)的不同需求,所以,它的应用日益广泛。而现今的视频领域里,特别是电视领域,MPEG-2被广泛应用,同时也有海量的MPEG-2视频。若能将这海量的MPEG-2视频转换为H.264/AVC视频,其意义是不言而喻的。所以, 这就亟待MPEG-2到H.264/AVC的转码技术。
最直接的转码方法是级联转码,先将待转码的视频完全解码,对解码后的重构数据按新的编码格式再编码。这种方法能得到最好的转码效果,但同时它也具有最高的复杂度,具有很大的时间开销,不适合实时系统等对时延要求比较高的应用。所以快速转码方法就显得特别重要,希望能用最小的复杂度获得最好的性能。一般地说,快速转码方法利用原始视频中已有的运动矢量、DCT系数等视频信息,来加快再编码过程。
基本有三种利用视频信息的途径,一是利用已有的运动向量来重构新的运动向量[1];二是利用已有的DCT系数来重构新的DCT系数[2];三是利用视频信息来选择编码模式。前两种途径在以前的转码方法中是比较常见的。而针对H.264/AVC的多模式预测编码,第三种途径对H.264/AVC的转码就特别重要。
H.264/AVC采用多模式的预测技术,分为帧间预测和帧内预测。帧间预测将16×16的宏块划分为不同块大小,有16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 4×4这7种模式,帧内预测则有Intra4×4和Intra16×16两种方式。具体编码时,利用RDO选择策略来选择最优的预测模式。
本文利用MPEG-2的运动信息,选择可能的预测模式,而跳过那些不会带来增益的模式,从而加快H.264/AVC的再编码过程。
1预测模式选择
1.1算法思想
帧间编码帧(P帧)的宏块在编码时,要检验10种模式,分别是:SKIP, 16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 4×4, Intra4×4和Intra16×16。这是一个相当复杂的过程。然而,在很多情况下,对这10个模式全部进行检验并不是很必要的。一般地说,SKIP和16×16, 16×8, 8×16这些粗粒度的预测模式比较适合平滑或运动平缓的宏块,而细节程度高或运动剧烈的宏块则更倾向于细粒度的编码模式。
运动矢量表征了物体运动,同一物体的运动一致,不同物体的运动可能不同。基于这种考虑,运动矢量的相异程度可用来度量宏块的运动特征,从而来选择预测模式。同时,经过我们的分析,量化因子QP也对预测模式的选择影响很大。当QP比较小的时候,易选择细粒度的预测模式,而当QP比较大时,则更倾向于选择粗粒度的预测模式。因此,我们也充分考虑了QP的影响。
1.2模式选择算法
根据上面的分析,我们提出如下的快速模式选择算法。
当重编码当前宏块时,MPEG-2码流中其运动矢量以及它邻近8个宏块的运动矢量(见图1)都是已知的。我们采用聚类方法,来获得这些运动矢量的相异程度。聚类后,若得到的类数比较少,则说明该区域的运动比较相似,可选择粗粒度的预测模式。而得到的类比较多,则说明该区域的运动杂乱,检验所有的预测模式比较好。并且,算法赋予SKIP和16×16模式最高的优先权,当所有的运动矢量都相似(即所有的运动矢量聚到一个类),仅选择这两种模式。
具体聚类时,算法采用mean shift [3]的聚类方法,因为mean shift具有不依赖样本顺序的优点。Mean shift算法是一个迭代的步骤,先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束。给定一个初始点x,核函数F(X)和容许误差ε,mean shift算法循环执行下面三步,直至结束条件满足。
1) 计算偏移均值mh(x):
其中w(xi)为每个样本的权重;
2) 把mh(x)赋给x;
3) 如果mh(x)-x<ε,结束循环;否则,继续执行1)。
算法选用均匀核函数,引入了QP对模式选择的影响,并且样本的权重均设为1。
其中,h是运动矢量的平均长度,λ是经验值,设为
具体的模式选择算法步骤如下。
1) 从MPEG-2码流中得到当前宏块和其相邻8个宏块的运动矢量,将运动矢量集合记为SMV:
SMV={MVi|i=1,…,9 & MViexsits}
2) (mean shift聚类)如果SMV不为空,执行这一步。否则,执行步骤3)。
2.1) 对每一个ci=MVi∈SMV,执行mean shift算法;
2.2) 收敛到同一个中心的运动矢量属于同一类。这一步,我们得到类的数目,记为NC。
3)(模式选择)根据NC来选择模式。
若NC=1,选择SKIP和16×16模式,进行预测;
若NC=2,3,选择SKIP, 16×16, 16×8, 8×16模式,进行预测;
其他情况,10种模式均用于预测。
2实验结果
本文算法集成于H.264/AVC的参考编码器JM98[4],而MPEG-2的编码器和解码器则是从MPEG的参考软件网址上下载的[5]。实验流程见图2。实验参数设置如下。测试了五段视频,分别为akiyo, basketball, flower garden, foreman, stefan,分辨率均为CIF(352×288),每一段有100帧;H.264/AVC编码器设置为baseline profile,GOP结构为IPPP,CAVLC编码,帧率为30Hz,宏块运动搜索的范围是16×16,1个参考帧。模式选择算法测试了不同的QP,分别为10,20,30,40和50。
我们采用节省的时间(记为△T),降低的信噪比(记为△PSNR)和增加的码率(△BR)来度量算法的性能。△T、△PSNR和△BR定义如下:
实验结果见表1。可见,我们的方法可以使转码复杂度大幅度降低,平均编码时间降低30%~60%,而视频质量却下降很小,基本在0.3dB范围,码率降低则一般在5%左右。即说明该算法大大加快了编码速度,同时也保证了图像的高编码质量和压缩的高效率,从而验证了其有效性。
3结论
本文提出了针对MPEG-2到H.264/AVC转码过程中的快速模式选择算法。算法用MPEG-2中已有的运动矢量进行聚类,进而判断出运动矢量的差异程度,从而选择宏块的候选预测模式。实验结果表明,模式选择算法可以在不显著降低视频质量的情况下,大幅度降低编码时间。
并且,我们的算法也可以集成于快速运动估计算法中,从而获得更好的性能。
参考文献
[1]Tan YP,Sun H.Fast Motion re-estimation for arbitrary downsizing vid-eo transcoding using H.264/AVC standard.IEEE Transactions onConsumer Electronics,Aug.2004:887-894.
[2]Shen B.From 8-tap DCT to 4-tap integer-transform for MPEG to H.264/AVC transcoding.IEEE International Conference on Image Pro-cessing,Oct.24-27,2004:115-118.
[3]Cheng Y Z.Mean shift,mode seeking,and clustering.IEEE Transac-tions on Pattern Analysis and Machine Intelligence.Aug.1995:790-799.
[4] H.264/AVC reference software.http://iphome.hhi.de/suehring/tml/download/ .
[5]MPEG-2 reference software.http://www.mpeg.org/MPEG/MSSG/in-dex.html.
快速转码 篇2
最简单的视频转码技术就是先对视频完全解码再重新进行编码,然而这种方法并未充分利用已编码的码流信息,因此转码效率很低。目前,国内外很多学者开展了许多快速转码研究工作。Wang等人[7]利用AVS的帧内预测模式预测H.264/A VC中的帧内预测模式,跳过H.264/A VC帧内预测模式过程以降低编码复杂度。Shang等人[8]将AVS标准中帧间编码宏块的分割模式信息直接映射到H.264/AVC编码过程中每个宏块的分割模式,从而大幅度提升了转码速度。Wang等人[9]利用AVS解码过程中的模式和运动矢量实现快速高效的转码。这些方法很好地利用了AVS码流中的一些信息来加速转码,但是没有结合编码H.264/AVC码率后的信息进一步提高转码后视频质量,因此仍有进一步提升的空间。此外,有些研究工作在视频转码中引入了机器学习的理论,Gerardo等人[10]假设H.264/AVC的宏块编码模式决定过程与MPEG-2中运动补偿残差的分布具有线性关系,利用MPEG-2运动补偿残差的分布与H.264/AVC宏块编码模式之间的相关性,利用机器学习的方法加速转码过程。这种方法的缺陷是在转码过程中会增加训练时间,在一定程度上会增加转码的复杂度。
本文充分利用了AVS码流中的各种码流信息,同时为解决机器学习算法在转码过程中需要耗费大量训练时间的问题,提出了一种基于改进型机器学习的AVS到H.264/AVC快速转码方法,旨在保证H.264/AVC压缩效率的前提下降低转码的复杂度。
1 AVS到H.264/AVC转码分析及动机
H.264/AVC中每个宏块(Macro Block,MB)编码会遍历宏块分割模式16×16、16×8、8×16和8×8,以及亚宏块分割模式8×8、8×4、4×8和4×4,这两种分割模式分别如图1a和图1b所示。该方法自适应地根据视频内容选择合适的分割模式,从而获得较好的编码性能,但是一个宏块需要重复编码8次,因此复杂度非常高。AVS为了在尽量保证视频质量的前提下降低编码过程的复杂度,每个宏块只采用了16×16、16×8、8×16和8×8四种分割模式。
为了探索AVS和H.264/AVC模式之间的相关性,本文测试了4种情况下模式的命中率,命中率表示事件A中的像素数目与事件B中像素数目的比值,并做了如下规定:
1) AVS码流中某宏块解码得出的模式为16×16分割模式,且H.264/AVC最终编码使用的分割模式也为16×16,该事件记为A;
2) AVS码流中某宏块解码得出的模式为16×8分割模式,且H.264/AVC最终编码使用的分割模式也为16×8,该事件记为B;
3) AVS码流中某宏块解码得出的模式为8×16分割模式,且H.264/AVC最终编码使用的分割模式也为8×16,该事件记为C;
4) AVS码流中某宏块解码得出的模式为8×8分割模式,且H.264/AVC最终编码使用的分割模式也为8×8或者8×4、4×8、4×4,该事件记为D。为了验证上述4个事件的命中率,本文测试了Party Scene、Book Arrival和Johnny3个序列分别在量化参数(Quantization Parameter,QP)为28和32两种情况下的命中率,具体测试结果如图2所示。
从图2可以发现,事件A、B、C和D的命中率一般都小于60%,只有Book Arrival和Johnny两个序列事件A的命中率在80%~85%之间。上述实验结果说明AVS的分割模式和H.264/AVC的分割模式并不是一一对应关系,尽管可以使用这种分割模式映射的方式加速转码过程,但是这会造成编码效率降低。传统的方法是先解码AVS码流,然后再使用H.264/AVC编码器编码,尽管该方法编码性能好,但是编码复杂度高,不适合实时性要求高的场合。
2 基于改进KNN算法的快速转码方法
为了降低AVS转码H.264/AVC过程的复杂度,同时保持较好的转码性能,本文提出了一种基于改进的K最邻近结点算法(K-Nearest Neighbor Algorithm,KNN)[11]的快速AVS到H.264/A VC转码方法。所提出的方法包括两个部分,分别为统计阶段和转码阶段。在统计阶段,提取了统计帧的AVS码流中编码块的分割模式及相应的运动矢量信息作为特征值,然后编码帧的待编码块编码时根据相同特征值在统计帧中寻找特征最匹配的M个模式,由于M个模式中可能存在重复,因此将M个模式中不重复的模式结合AVS码流中的分割模式一起执行率失真优化(Rate Distortion Optimization,RDO)[12]过程,从而加速转码过程。
为了提高特征的有效性,本文将待转码帧分为统计帧和快速编码帧两类。选择N帧为一个编码组,且N帧中前L帧为统计帧,其余N-L帧为快速转码帧。统计帧不进行快速转码,先使用传统的AVS解码器解码码流再使用H.264/AVC编码器编码,在该过程中提取宏块编码采用分割模式对应的特征数据,该过程对应于图3中的统计阶段。快速编码帧使用本文提出算法快速转码,首先使用AVS解码码流中的数据得到特征数据,然后根据该特征数据在统计帧中的特征数据中利用KNN方法寻找M个最接近的特征数据,并将其对应的统计帧中的分割模式和AVS码流中的分割模式一起构成备选模式列表,然后该列表中每个模式执行RDO,从而避免全遍历方式选择最佳的分割模式。图3是上述所述方法工作原理示意图。
2.1 特征提取
根据编码原理可以,若某个宏块运动越剧烈,则很可能使用较小的块编码,若某个宏块运动越缓慢,则很可能使用较大的块编码。而宏块的运动矢量(Motion Vector,MV)反映了当前块的运动情况,因此,本文探索了MV与转码中最终使用的分割模式之间的相关性。本文选取AVS码流中某个宏块分为16×16、2个16×8和2个8×16分割模式时对应8×8块之间的方差作为5个特征,并构成一维矢量F。
式中:Vm,16×16表示16×16内4个8×8块MV之间的方差;Um,16×8表示16×8分割中上方块内2个8×8块MV之间的方差;Dm,16×8表示16×8分割中下方块内2个8×8块MV之间的方差;Lm,8×16表示8×16分割中左方块内2个8×8块MV之间的方差;Rm,8×16表示8×16分割中右方块内2个8×8块MV之间的方差。
2.2 特征提取改进KNN算法的快速AVS到H.264/AVC转码
本文提出方法根据AVS的码流分割模式信息结合改进的KNN方法确定可能成为最佳宏块分割模式的列表,取代原有所有模式全遍历的方式,然后每种模式执行RDO,选择率失真代价(Rate Distortion Cost,RDCost)最小的模式作为最佳宏块分割模式。传统的KNN算法根据训练样本集中与新样本距离最近的K个样本,并根据这K个样本所属类别判断新样本的属性。本文中根据KNN算法选择K个样本后,并不是直接判断其属性,而且选择K个样本对应的所有属性。
本文提出的基于改进KNN算法的快速转码方法的具体方法如下:
步骤1,从AVS码流解码一个宏块,判断当前帧的标号frame_poc是否为0,若是转向步骤4,否则转向步骤2。
步骤2,判断当前帧的标号frame_poc是否能被N整除,若是转向步骤6,否则转向步骤3。
步骤3,构建特征矢量Vector2,然后在前面frame_poc能被N整除帧中所有的Vectorl中利用KNN算法选择M个与Vector2最接近的Vectorl,并将M个Vectorl对应的不重复模式构建最可能成为最佳宏块分割模式的分割模式列表,具体该构建方法如下,第一个模式为AVS解码信息中当前块编码使用的分割模式,随后的所有模式根据在M个模式中占的比例由大到小排列。
步骤4,若当前帧标号frame_poc能被N整除或者等于0,则遍历H.264/AVC所有发宏块分割模式编码一个宏块,否则使用粗略分割模式列表中的模式编码一个宏块,选择当前宏块最佳的分割模式并转向步骤5。
步骤5,判断当前宏块是否为最后一个宏块,若是,则结束,否则转向步骤1。
步骤6,构建跟Vector2具有相同属性的特征矢量Vector1,并保存,然后转向步骤4。
3实验结果与分析
为了验证本文提出算法的有效性,将它与传统级联式转码器以及文献[8]中的算法进行对比实验。使用的AVS参考软件为rm52j_r1,H.264/AVC参考软件为JM18,使用了6个不同分辨率不同场景的视频测试序列,分别是PartyScene,RaceHorses,Johnny,FourPeople,BookArrival和Leavelaptop。在仿真实验中,图像编码格式为IPPP,帧率为30 f/s(帧/秒),测试每个序列100帧。rm52j_r1参考软件的量化参数为QP=28,最大搜索范围为16,帧率为30 f/s,参考帧为2帧。M选取不同值时的测试结果如图4所示。最终的实验结果使用节省时间(Time Saving,TS)和码率增加(DBR)两个指标衡量算法性能,具体的计算如下
式中:Tori表示传统级联转码器所花费的时间;Tφ表示对比方法(提出的方法和文献[8]方法)所花费的时间。
式中:Rori表示传统级联转码器的码率;Rφ表示对比方法(提出的方法和文献[8]方法)的码率。
从图4a和图4b可以发现,针对同一M,不同序列节省时间量和比特率增加量差别很大,这是由于不同序列具有不同的属性。针对同一序列不同M的情况下,当M小于等于5时,随着M值的增大,预测得到的备选模式列表中的模式数目增多,造成编码复杂度增大,编码效率也随着增大。当M大于等于10时,尽管M值逐渐增大,但是备选模式列表中得到的不重复模式数目并没有显著增加,导致节省时间量和比特率增加量基本不变。
综合考虑分类精度和转码复杂度,本文中N取10,M取值为5。在H.264/AVC编码中,JM18参考软件的量化参数(Quantization Parameter,QP)分别为24、28、32、36,最大搜索范围为16,帧率为30 f/s,参考帧为2帧,本文提出方法与级联方式转码器的对比结果以及文献[8]方法与级联方式转码器的对比结果如表1所示。
由表1实验结果可以得出,本文提出算法与传统级联转码器算法相比,在比特率平均增加4.89%的情况下,转码时间降低了约56%,文献[8]方法与传统级联转码器算法相比,在比特率平均增加18.23%的情况下,转码时间降低了约77%。尽管文献[8]方法的方法能得到更好地降低转码过程的复杂度,但是其码率大幅增长,使得编码效率显著降低。虽然本文提出算法对转码过程复杂度的优化程度没有文献[8]方法好,但是并未引起码率显著增加。并且本文中M是可以选择的,当M更小时,将会导致转码过程的复杂度降低更多。
4 结论
由于视频从AVS标准转码成H.264/AVC标准具有很大的应用前景,目前研究主要通过AVS和H.264/AVC之间模式映射的关系减少转码复杂度,但是这两种标准采用技术不同会导致宏块采用的分割模式不同,这会降低转码后视频的压缩效率。为了解决上述问题,本文提出一种粗略确定宏块分割模式的快速转码方法。该方法利用AVS的码流中宏块分割模式,并结合改进的KNN方法确定最优可能成为最佳宏块分割模式的列表,从而避免遍历所有分割模式。大量的实验结果证明,与传统级联方式的转码方法相比,本文提出的算法在比特率增加4.89%的情况下,转码时间降低了约56%。
尽管本文提出方法可以降低转码过程的复杂度,但是由于考虑的因素较少,导致模式预测并不十分准确,还可以通过考虑运动矢量大小、待编码块复杂度等因素进一步提高模式预测精度。
摘要:尽管音视频编码标准(Audio and Video Coding Standdard,AVS)的编码性能可以与H.264相媲美,但是H.264的应用范围更加广泛,因此视频由AVS标准转码成H.264标准具有很大的应用前景。目前,主流的转码方法是将AVS的分块模式与H.264的分块模式映射的方式降低转码复杂度,但是技术之间的差异导致这两种标准之间的分块模式并不是一一映射的关系,因此会导致编码效率大幅度降低。提出一种基于改进KNN(K最邻近节点)算法的AVS到H.264/AVC快速转码方法。充分利用了AVS码流中的各种信息,通过改进的KNN算法建立了中间信息和H.264分块模式之间的映射模型。根据AVS中运动矢量信息的差异自适应确定H.264可能的分块模式,实验结果表明上述问题得到有效解决,该算法在保证H.264编码效率的前提下大幅降低了转码复杂度。
关键词:音视频编码标准,H.264/AVC,快速转码,K最邻近结点算法
参考文献
[1]TANG Q.NASIOPOULOS P.Efficient motion re-estimation with rate-distortion optimization for MPEG—2 to H.264/AVC transcoding[J].IEEE Trans.Circuits Syst.Video Technol.,2010,20(2):262-274.
[2]AHMAD I,WEI X H,SUN Y,et al.Video transcoding:an overview of various techniques and research issues[J].IEEE Trans.Circuits Syst.Video Technol.,2005,7(5):793-804.
[3]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits Syst.Video Technol.,2003,13(7):560-576.
[4]FAN L,MA S W,WU F.Overview of AVS video standard[C]//Proc.IEEE International Conference on Multimedia and Expo.[S.1.]:IEEE Press,2004:423-426.
[5]SULLIVAN G J,OHM J R.HAN W J,et al.Overview of the High Efficiency Video Coding(HEVC)standard[J].IEEE Trans.Circuits Syst.Video Technol.,2012,22(7):1649-1668.
[6]YU L,YI F.DONG J,et al.Overview of AVS-video:tools,performance and complexity[C]//Proc.IEEE visual Communication and Image Processing.Beijing:IEEE Press,2005:12-15.
[7]WANG Z H.GAO W.ZHAO D B,et al.A fast intra mode decision algorithm for AVS to H.264 transcoding[C]//Proc.IEEE International Conference on Multimedia&Expe.Toronto:IEEE Press,2006:61-64.
[8]尚凯,张万绪.AVS-H.264视频转码快速算法[J].计算机工程,2010,36(12):234-244.
[9]WANG Z H,JI X Y,GAO W,et al.Effective algorithms for fast transcoding of AVS to H.264/AVC in the spatial domain[J].Multimedia Tools and Applications,2007,35(2):175-202.
[10]FERNANDEZ G,CUENCA P,BARBOSA L O,et al.Very low complexity MPEG-2 to H.264 transcoding using machine learning[C]//Proc.14th Annual ACM International Conference on Multimedia.Santa Barbara:ACM Press,2006:931-940.
[11]ZHANG B.Reliable classification of vehicle types based on cascade classifier ensembles[J].IEEE Trans.Intelligent Transportation Systems,2013,14(1):322-332.
IPTV实时转码关键技术研究 篇3
关键词:IPTV,实时转码,流媒体,播控
1 前言
广东电信为差异化ITV业务的竞争力,规模化发展ITV业务,提出了ITV云播产品。通过云播,用户可在ITV上点播天翼云上任意格式的视频。但目前IPTV平台支持的媒体格式非常有限,另外,平台也需要为不同的用户提供IPTV高清、IPTV标清、互联网视频、移动清晰、移动流畅等[1]不同规格的视频。
若采用现有的点播方式,则需对云盘上所有媒体文件进行预转码,预先制作各个规格的点播副本,但被大量重复点播的仅是少数视频,大部分是少量点播和零点播视频。因此,预转码方式既浪费了大量的媒体处理计算资源及存储空间,又增加了媒体内容的维护成本。
本文提出的基于按需点播的IPTV实时转码解决方案,实现了ITV上轻松点播云盘上任意格式的音视频内容,大大提高了媒体处理能力及海量媒体的存储效率,减轻了运维人员日常转码处理与媒体数据的维护工作量。
2 IPTV实时转码关键技术
IPTV点播业务本质上是实时流媒体业务,具有“边下载边观看”的特性,并支持类VCR(Video CassetteRecorder)播控操作,即播放、暂停、拖动、快进快退、停止等操作。与预转码相比较,实时转码需解决两个技术难点:(1)任意视频格式帧级别响应速度的即时转码并封装为机顶盒(STB)支持的TS流;(2)在实时帧编码过程中支持播控操作。
2.1 流媒体封装技术
RTP(Real-time Transport Protocol)/RTCP(Real-timeTransport Control Protocol)常用于承载IP实时音/视频组播或单播。RTSP(Real Time Streaming Protocol)则用于建立和控制媒体服务器和客户端之间的连续音/视频流,协同RTP、RSVP等提供流媒体传输服务[2]。TS(TransportStream)媒体封装标准支持多种媒体流和编码标准,且具有较强的抵抗传输误码的能力。IPTV采用标准MPEG-2TS格式在IP网络传输音视频媒体流。
实时转码系统的流媒体传输方案采用了如图1所示的传输及控制协议栈[3],在ITV机顶盒和实时转码平台之间建立信令与媒体两个通道,将实时编码生成的音视频裸数据分组成封装成TS包,然后通过UDP/TCP协议在IP网上传输。
(1) 媒体发送和接收通道:如图1左侧部分,实时转码平台和ITV机顶盒之间按照图中所示的协议来完成音视频媒体流数据的传输和解包,其中RTP协议为可选性支持;
(2) 媒体流会话控制通道:如图1右侧部分,IPTV实时转码平台和ITV机顶盒之间按照图中所示的RTSP协议来实现对音视频媒体流的交互控制;
(3) 实时转码输出的音频(AAC)、视频数据(MPEG4/H.264),分组后以188 Bytes定长的TS包封装到IP包进行传输,约7个TS包封装到一个IP数据包。
2.2 实时播控处理技术
IPTV点播业务支持播放、暂停、拖动、快进快退和停止等操作,称播控。其中最典型的快进快退操作具有下述特点:
(1) 用户以几倍于正常播放的速度向前或向后观看影片;
(2) 播放器有选择地跳跃着解码所需的视频I帧;
(3) 服务器以几倍于正常播放的速度解码视频数据,并挑选关键帧发送,如图2所示,服务器需要过滤读取的视频数据,P帧、B帧等被丢弃[4]。
要解决的关键问题在于,快进快退模式下实时转码服务器要以几倍于正常播放的速度读取网盘视频,并转码出合适的关键帧发送。目前IPTV平台是根据各倍速要求预先将关键帧提取出来分成几个独立文件存放,在快进快退时只用读取对应的仅含关键帧的文件,但这显然不符合基于实时转码的点播要求。
为了降低对云盘的下载压力,本文对图2的方法进行了优化,先根据时间定位视频的大致位置并跳跃式读取少量媒体数据。如图3所示,媒体数据的读取与发送流程如下:
(1) 第一步:假设当前播放到T0位置,当前时间t=0,用户请求N倍快进/快退。通常的方法是从T0开始每1秒输出N秒的数据,优化后从T0开始每1秒输出1帧关键帧,每帧关键帧的时间戳相差N秒。
(2) 第二步:服务器直接定位(Seek)到视频位置,读取少量数据并按IPTV标准格式转码,直到输出关键帧(I帧)。服务器只发送这个I帧到客户端,丢弃其它数据如音频、P帧、B帧等。
(3) 第三步:服务器侦听用户请求,若到下一秒,仍未收到“取消”,转到第二步;
(4) 第四步:收到用户“取消”请求,退出快进/快退模式,并从当前位置开始顺序读取视频数据。
3 IPTV实时转码解决方案
基于上述关键技术,本文提出IPTV实时转码解决方案,如图4所示,特点如下:
(1) 基于TS媒体封装标准,转码任意格式视频并实时输出到机顶盒(STB);
(2) 基于RTSP协议与STB进行信令交互,接收STB的播控请求,如播放、暂停、快进快退等;
(3) 根据时间快速定位视频的大致位置,并跳跃着从云盘抽取媒体数据,转码输出关键帧,实现在转码过程中实时响应STB的播控请求。
实时转码平台由流媒体服务器负责与STB建立信令、媒体流通道,并把播控请求转发给转码引擎,由转码引擎下载源视频并实时转码,转码后的音视频数据经TS封装后,最后通过流媒体服务器与STB间的媒体流通道传输。以点播流程为例,如图5所示。机顶盒获得播放URL后,与实时转码平台建立信令通道并发送请求,随后建立视频、音频通道,最后通过PLAY指令启动媒体数据下载,至此完成“开始播放”。
4 总结
基于云计算框架的视频转码系统 篇4
在通常的视频服务访问中,播放终端的数据处理能力和显示能力不同,网络的带宽、丢包率等信道特性不同,因此视频的编码需要根据这些客观条件进行相应的转换,从而保证用户的正常观看,视频转码正是解决这一问题的关键技术。常见的视频转码方案分为硬件转码和软件转码两大类。前者主要应用于对转码延时敏感、稳定性要求高、输出格式相对固定的场景中,如视频直播流的转码,一般采用专用的ASIC芯片或FPGA可编程器件,输入输出格式和参数很难改变,每台设备通常能够支持4~8路直播流的转换。后者主要应用在对转码延时和稳定性要求不那么高、输入输出格式复杂的场景中,如基于视频文件的转码或者非广播级质量要求的直播流转码。从目前视频服务的主要应用而言,由于点播类(VOD)的应用比重较大,因此软件转码方案是业界的主要选择。
从软件转码器所依赖的计算平台来看,视频转码软件的实现从最初单纯简单依靠单个CPU的通用计算能力,发展到利用CPU的多功能指令集(如MMX、3D Now、SSE等)。但在经历了CPU核心的计算能力快速提高的阶段后,单个核心的计算能力已经接近瓶颈,而人们对视频质量的需求却与日俱增,从最早的VCD(分辨率352×288,码率约1.5Mbps),到标清DVD(分辨率720×576,码率约4.5Mbps),再到高清蓝光(分辨率1920×1080,码率约25Mbps),使得相应的转码复杂度也大大增加。随着多核计算机和并行计算思想的普及,视频转码的并行化成为大势所趋。
利用多线程技术,视频转码可以充分发挥多核CPU的并行处理性能,实现图像组级的、帧级的、片级的或宏块级的并行策略[1,2,3,4],但这种方法依旧受制于单机的CPU数量或转码算法本身的并发能力,使得并发率上升较为有限。采用分布式计算机集群,以单个转码任务为最小粒度的并发调度机制,可以增加系统整体的吞吐量,也不受制于转码算法,但是无法提升单个转码任务的转码速度。本文利用云计算的“Map-Reduce”计算框架,将单个转码任务并发至多个计算节点,每个计算节点同时对同一个视频文件的不同部分分别进行转码,分段转码完成后系统再将转码后的视频文件合并,完成单个转码任务。该系统的并发能力不会受限于单个计算节点的物理条件和转码算法,具备较大的并发能力提升空间,可以显著提升单个转码任务的速度。
1系统架构
“Map-Reduce”[5]是一种适用于TB规模以上数据量的并行运算框架,“Map”(映射)是一个将大任务拆分成多个独立的小任务,并使它们可以平行地映射到多个节点的过程,“Reduce”(化简)是将节点独立的小任务完成并将其合并的过程。在本文提出的转码系统由以下几部分组成:存储系统、任务调度、码流预处理、码流后处理、码流分割、码流合并、转码节点。其中,“码流预处理”和“码流分割”实现了将大段视频码流拆分成多个独立的小段视频码流的过程,称为“映射器”(Mapper);“转码节点”、“码流合并”、“码流后处理”实现了小段视频码流转码、合并和复用的过程,称为“化简器”(Reducer)。系统整体架构如图1所示。
存储系统主要是用于存储用户通过视频接收接口提交的待转码视频,以及转码系统成功转码后的视频,用户可通过内容发送接口获取视频和相关信息。
任务调度是转码系统的核心,它负责管理系统内的所有计算资源,当它发现有新的转码任务到达时,它首先根据该任务的优先级以及当前系统的可用资源,分配适当的计算资源依次去完成码流预处理、码流分割、转码、码流合并、码流后处理这几个步骤。
码流预处理需要对用户提交的待转码视频进行分析,解析文件容器,按照用户定制的转码需求进行码流解复用,实现视音频码流分离。
码流分割按照任务调度模块的指示,将指定的视频码流(由于音频转码的复杂度远远低于视频,因此音频码流不做分割,直接转码)分割成段(打出入点标记,不生成实际的物理文件),分割时需要考虑转码后合并码流的图像连续性,避免产生跳帧或重帧等现象。
转码节点根据任务调度模块的指令,读取特定的分割后的视频码流段(或完整的音频码流),根据用户设置的转码参数完成转码过程。转码节点上需要安装编解码库,编解码库以插件的形式的部署,使得每个转码节点支持的码流格式具有可扩展性。
码流合并是码流分割的逆操作,其主要目的是将转码后的视频码流段重新组合到一起,形成完整的视频码流,保持原始的码流先后顺序。
码流后处理对转码合并后的视频码流以及转码后的音频码流按照用户指定的文件格式进行复用,生成成品文件。
2任务调度
当任务请求到达后,任务分析根据任务的属性将任务分为“非紧急任务”与“紧急任务”。非紧急任务带有可量化的优先级标记,进入任务队列后依据优先级进行排队,在任务队列中的任务优先级会随着在队列中的时间的增长而提高,这样可以防止“饿死”的问题出现,即某个较低优先级的任务由于一直排在较高优先级任务后面而一直无法得到转码服务。
紧急任务具有非常高的优先级,可以绕过一般的任务队列,直接请求计算资源以完成转码。在可用计算资源不足的情况下,可以通过调度将其他正在进行的非紧急转码任务暂停,腾出足够的计算资源服务于该紧急转码任务,保证紧急转码任务在较低的时间内完成。
转码系统内的所有计算节点都要向任务调度模块以心跳信号的形式汇报自身状况,包括当前负载、任务优先级、任务执行进度。资源调度一方面通过节点监控传达的信息,得到集群的负载分布,再根据节点计算能力库中存储的信息,得到实时的集群可用计算资源分布情况;另一方面根据任务情况(紧急任务和非紧急任务队列),调配可用的计算资源。当新任务的优先级特别高时,任务调度模块可以暂停集群中优先级较低的转码任务,将更多的计算资源集中起来服务紧急的转码任务。最终,形成一系列的控制命令发给节点控制模块。
节点控制执行由资源调度模块发来的节点控制命令,使计算节点执行、暂停或恢复某个特定任务,包括码流预处理、码流分割、转码、码流合并和码流后处理,控制命令除了执行、暂停和恢复基本操作外,还指定了任务的输入和输出,以及相关的参数设置。
节点监控接受从所有计算节点发来的心跳信号,心跳信号包含节点当前负载、当前执行的任务优先级和进度或结果,将这些信息汇总后形成集群负载分布报告,提供给资源调度模块。一旦转码节点因为软件或硬件故障导致心跳信号中断,或转码失败,任务调度模块及时回收该转码子任务并重新调度,直至所有转码子任务成功结束。
3视频拆分
视频码流中的图像组GOP(Group Of Pictures)是由一系列连续的图像组成的,每段视频码流包含了若干个连续的图像组。每个图像组至少有一个I帧,并且I帧处于图像组的开头。I帧可以独立解码而无需依赖其他帧,因此一般说来,一个图像组内出现的错误最多延续至下一个I帧。在视频文件分割的过程中,图像组级别的粒度比较适中,相比单帧的粒度而言,有更好的解码独立性;相比一整段完整的视频粒度,有更好的转码并发性。
因此,在视频文件拆分的过程中,需要对码流的图像组结构进行判断,分别针对Open GOP和Close GOP的情况采取不同的分割策略,即Open GOP时需要对每一段分割码流片断的前部增加一个GOP的冗余,保证解码器能够解出这个片断中的所有帧。同时在进行分割时还要记录下分割策略的选择情况,供合并程序参考使用。视频文件分割的流程如图3所示。
如果拆分点后的第一个GOP 是Close GOP,就不用考虑其他策略,即在拆分点将视频分为前后两段,不会使其中一段视频无法解码。反之,如果拆分点后的第一个GOP 是Open GOP,就需要使后一段视频前多加一个GOP。
另外,视频拆分中还有一点需要注意的是,对于解码器而言,每次对一段视频进行解码时,都要先寻找该段视频中的序列头信息。然而,通常一整段视频可能仅在开始处包含一个序列头,也可能在每个GOP 前都附带有相同的序列头,这要视码流而定。这时,若碰到前一种情况,则需要在拆分之后的每一段子视频前都添加上序列头,以保证解码器的正常运行。如果碰到后一种情况,那么就在拆分时将每个序列头都视为GOP 结构的一部分进行整体分割。
4实验结果
4.1实验环境
为了测量本文提出的转码系统的性能,我们将其部署在一个计算机集群上。该集群采用千兆以太网进行互联,以满足集群节点间大量的IO访问(读取待转码文件、生成临时文件和最终视频文件)。每个集群节点的基础硬件配置为:双4核CPU,主频2.8GHz,6M缓存,8GB内存,存储服务器的硬盘容量为2TB,其他计算节点的硬盘容量为137GB。在软件配置方面,部署Windows 2003 64bit操作系统,使用ffmpeg(版本为0.8)来完成码流的预处理、合并和后处理,使用x264(版本为0.116.2057)完成单段视频的转码。码流分割、任务调度程序以及每个节点上的心跳服务程序用Visual Studio 2008开发。存储服务器、调度服务器、码流预处理及分割服务器、码流合并及后处理服务器各占用1台物理机,转码节点共有5台物理机,整个集群有9个节点。图4为实验环境图。
4.2单个视频实验
我们先将一段时长约20分钟、码率为50Mbps的高清1080i的MPEG-2测试视频转为10Mbps的H.264,考察在不同计算节点数量的条件下系统的转码速率。
如图5所示,当转码节点只有1个时,转码任务未被拆分并分散至该集群上,只能单纯依靠在单个节点上的多线程并发,由于输入源视频的码率很高,转码的复杂度大,单个节点的计算能力有限,转码时间远远超过视频时长(在图中用红色水平虚线表示)。随着转码节点的增加,转码任务被拆分,转码所需时间大幅度降低,当转码节点数达到4个时,转码所需时间已经低于视频时长,意味着实现了高清视频的超实时转码。
当然,由于视频的拆分、合并都会带来一定的开销,使得转码速度的提升和转码节点数量的增加不会呈线性关系,但总的说来,这个基于云计算框架的转码系统极大拓展了转码速度的提升空间,而且,单个节点能力的提升(转码算法改进、CPU核心数增加)并不制约系统整体的性能提升。
4.3多个视频实验
我们再将一批总计约50小时(75个文件,约1.1TB)、码率为50Mbps的高清1080i的MPEG-2测试视频转为10Mbps的H.264。如果将这一批视频转码当做一个单独的任务来看待,那么衡量系统完成该任务的速度可以用“吞吐量”这个指标来考察,当系统架构和核心算法未改变的情况下,系统和外部的吞吐量越大,总体处理时间越短。而如果将每一个视频文件的转码都当做是一个单独的转码任务来看待,我们可以用“超时率”这个指标来考察系统的性能,其定义为:超时率 = 视频时长 ÷ 转码时长 – 1。当1个小时的视频用1个小时转完,其超时率为0,即实时转码;超时率为负意味着实现了超实时转码。我们通过调节任务并发数量(即一个视频文件用多少个转码节点进行转码)来观察该转码系统的性能能力的变化情况,结果如表1所示。
从中,我们可以看到,随着并发数的增加,系统对外的吞吐能力略有下降,是因为拆分、合并等操作引入了额外的开销,但是单个文件的转码速度得到了提升,由单个节点的严重滞后到4个或5个节点并发时的超实时速度。并行化计算势必带来额外的开销,从而引起成本的上升,但是它也缩短了单个任务的执行时间,对于需要尽可能缩短单个转码任务执行时长的应用场景(如最新热点新闻的发布),采用集群并行化是一个比较廉价可行的解决方案。
5结语
在视频服务日趋丰富的今天,视频服务提供商对视频转码的需求越来越大,而高清化的视频使得转码的复杂度也随之提高。当单个计算节点的转码能力达到瓶颈后,本文提出了一个基于云计算框架的视频转码系统,利用计算机集群的并发能力,将单个转码任务拆分后并发执行,从而进一步显著提升了转码速度。
目前,该系统已应用于我司高清最新热点点播节目的生产发布,显著提高了高清点播节目的上线速度。
参考文献
[1]蒋兴昌,周军,罗传飞.H.264并行编码算法的研究[J].电视技术,2008,32(2):33-35.
[2]魏妃妃,梁久祯,柴志雷.基于X264多线程并行编码研究[J].电视技术,2011,35(19):7-10.
[3]宋阳,章晓燕.基于片上多核的H.264编码的并行加速性研究[J].计算机时代,2011(4).
[4]冯飞龙,陈耀武.基于H.264实时编码的多核并行算法[J].计算机工程,2010(24).
面向在线制作的集群转码系统设计 篇5
在基于广域网环境的在线节目制作系统中,用户需要在制作过程中大量使用各种多媒体素材,它们往往具有不同的分辨力、制式、音视频压缩格式甚至是压缩参数,这会对节目制作系统的兼容性提出很高的要求,因此如何能够在一个统一的制作平台上自由使用这些素材是在线制作环境需要解决的重要问题。在专业节目制作领域,节目素材的导入是后期制作中的重要一环,通常如苹果平台下的Final Cut Pro这类的非线性编辑软件,会将需要导入的素材转码为统一的格式,从而满足后续编辑工作的需要。但是这种方式需要节目制作终端具有强大的运算能力,才能尽量降低素材导入所占用的时间。而对于普通的视频制作爱好者而言,更需要一台性能强大的计算机作为其素材导入、图像处理、特效渲染等一系列制作环节的重要工具。为了能搭建起一个基于广域网的在线节目制作系统,使更多普通用户能够参与到节目制作活动中,需要在网络前端建立一组为转码、特效合成等大运算量的工作提供保障的计算集群,这样的集群能针对运算任务进行适当的分解,利用多运算节点并发的优势,提高任务执行速度,从而满足多用户同时工作的需要。
2 集群转码系统设计
本文所要实现的集群转码系统将最常见的MPEG-2视频压缩及TS封装格式转码为目前最先进的H.264/AVC编码格式[1]。
2.1 集群转码系统的构成
整个集群转码系统由一台核心服务器和若干台计算节点组成,服务器和计算节点都配有千兆以太网卡,相互之间采用局域网交换机互联。转码任务分析和分解、多媒体素材的分割与分发以及最终的分段回收与合并等功能都由核心服务器承担,此服务器同时管理所有的计算节点,并在执行转码任务过程中对所有节点以负载均衡的方式进行调度。计算节点负责实际的转码运算,在预先配置好一组转码程序的情况下,由核心服务器的调度系统来负责启动节点上的转码运算。系统整体架构如图1所示。
2.2 Condor调度系统
Condor[2]是Wisconsin-Madison大学Condor研究计划中的一款开源软件系统,它能够提供高吞吐量的计算环境,有效利用那些通过网络互连的工作站的计算能力。同其他分布系统类似,Condor提供任务排队、调度策略、排序策略和资源管理等功能。本系统利用Condor对计算能力的调度控制来实现集群转码功能。
Condor系统利用一种称为Class Ad的机制来提供一个极端灵活的架构,从而实现任务与资源之间的匹配。在用户提交任务时可以标明需要满足的要求和一些参数,同样,在配置Condor系统中的设备资源时也可以指明该设备对希望执行的任务的要求和参数。通过这两组要求和参数,系统会为任务寻找网络中的可用计算资源,然后在那里执行任务。
另外,Condor系统中提供了一种名为有向非循环图(Directed Acyclic Graph,DAG)的任务提交机制。利用DAG可以表示一组有依赖关系的任务,用DAG描述文件可以将一个或一组任务设置为另外一个或一组任务的子任务。
如图2所示,任务A即为B和C的父任务,反之,B和C为A的子任务。同样,B和C均为D的父任务,而D就是B和C共同的子任务。Condor会根据该描述文件,自动在所有的父任务执行完毕的情况下再开始分配执行子任务。这样的机制,为项目中子视频转码后再拼接的形式提供了有效的解决方案。
3 集群转码系统的实现
集群转码系统按照上一章所述的架构完成硬件环境搭建,而软件部分的实现则包括任务生成、转码程序、结果生成等几个部分。
3.1 任务生成
在本文所设计的集群转码系统中,任务生成部分包括了多项功能,有素材格式分析及封装解包、视频流分割、子任务提交等步骤。
素材格式分析:根据用户运行程序时提供的参数对素材内容进行一定的分析,获得素材格式的基本信息、包括封装格式、视音频的编码格式、视频参数等,对于转码程序不能适应的参数向用户返回不能支持的错误信息。
封装解包:将封装为TS流格式的原始素材进行解包,分别生成相应的音频和视频基本流。
视频流分割:视频数据本身的特性决定了它的分割点并不能处在码流中的任意位置,作为解码器处理的基本单元,必须保证同一视频帧的数据不能产生断点,否则将无法正常解码。另外,由于MPEG-2视频压缩编码采用了帧间预测技术,这就决定了视频码流中,不同的帧之间存在相互参考,必须将前后相关的若干帧图像数据同时送入一个解码器,才能保证解码的正确性,最典型的问题在于Open Go P和Close Go P之间的区别[3],见图3。
下面介绍一种有效的视频切割的解决方法[4]。由于MPEG-2标准规定,在Go P头信息的一个字段中指明了该Go P是Open还是Close,这就给图像分割带来了方便,可以根据切割点处Go P类型的不同设置不同的切割策略。首先,如果切割点后紧跟的第一个Go P是Close的话,则不用考虑其他策略,即在分割点将视频分为前后两段即可,不会使某一段视频产生无法解码的情况。若切割点之后紧跟的第一个Go P是Open的话,则需要使后一段视频前多加一个Go P。以图3为例,假设现在切割点正好取在Go P(k-1)与Go P(k)之间,当发现Go P(k)为Open Go P时,则第2段子视频的起始点应取在Go P(k-1)的起始位置,而第1段子视频的结束点仍然取在2个Go P的中间分界点上(如图4所示)。
分割之后,第2段视频中的Go P(k)可以保证每一帧都正常解码,然后在视频拼接时采取对应的方法,即可以实现连贯的视频无缝拼接。
另外,视频切割中还有一点需要注意的是,对于解码器而言,每次对一段视频进行解码时,都是先寻找该段视频中的序列头信息,即sequence head字段。然而,通常一整段视频可能仅在开始处包含一个序列头,也可能在每个Go P前都附带有相同的序列头,这要视码流而定。这时,若碰到前一种情况,则需要在切割之后的每一段子视频前都添加上序列头,以保证解码器的正常运行。而若碰到后一种情况,则需要在切割时将每个序列头都视为Go P结构的一部分进行整体切割。
图5是本文所设计的集群转码系统中针对视频分割的代码流程框图。这里所实现的视频分割均是基于MPEG-2的TS流所设计的。
3.2 结果生成
所有的运算节点在完成被分配的转码任务之后,会将转码的结果传回给核心服务器,因此需要将这些零散的视频片段重新组合成完成的视频,同时还要能够与音频文件一起通过格式封装等手段生成一个新的多媒体素材。由于视频分割与转码部分已经充分考虑到了无缝拼接的概念,因此两段子视频之间的图像帧是完全首尾相连的。如此,在拼接程序中就无须考虑帧的次序调整问题。需要指出的是,由于各段子视频是在不同的设备上分别进行转码运算的,因此在生成的码流中,各自都可以成为一段完整的视频,包括许多头部信息等稍显重复的内容。以实验中所使用的X264编码工具库为例,在生成码流的开始部分会加入一些特有信息,包括SPS以及编码器参数等。在合并码流的程序中,会减去除第一段外的其他子视频中的这些附加信息,这样可以减少最终码流的文件大小,但又不会影响码流的正常解码播放。
3.3 转码程序
在本课题中,视频转码程序的目的就是将原本符合MPEG-2标准的压缩码流转码为符合H.264标准的码流。由于这两种标准在压缩算法上存在较大的差异[5],因此在使用软件进行转码时,最为合适的方案就是先将MPEG-2码流解码为原始YUV图像数据,再将其编码为H.264格式,这也就是所谓的“全解全编”转码方法。项目要求在H.264的编码中具有许多可调参数,这些参数的设置是由转码用户所决定的,因此利用这种“全解全编”的方法可以方便地调整编码器的参数。图6是整个转码程序的算法流程。
MPEG-2解码和H.264编码均采用了调用函数库的形式,其中MPEG-2解码开始采用的是ffmpeg;H.264编码则采用的是X264开源工具库。后处理部分主要是指对H.264码流的帧顺序的调整,以及调用函数库时所分配的数据结构的内存释放。
4 系统测试分析
笔者对本文所设计的集群转码系统进行测试。测试环境如表1所示。图7是Condor系统对于各个设备的资源列表。其中,Condor将双CPU计算机视为2台设备。
对于集群转码设备的平台环境,笔者考虑以Linux为基本的操作系统平台,主要是由于笔者在对Condor基于Windows和Linux两种操作系统平台进行了测试之后发现,Linux平台中Condor不会在DAG模式下占用过多起始运行时间,这样能够提高整体转码系统的效率。
对于同一计算机而言,在执行相同参数的视频转码任务时的运算效率基本上是一定的,即视频转码的时间与视频文件的原始大小成正比。因此在对视频分割的子视频文件大小进行设定时就有了依据,对于同一段视频,无论其如何分割,在所有执行终端的运算速度相当的前提下,纯粹的转码运算时间是一定的。那么尽量将视频文件分割为若干等量的小任务,并且根据各运算节点的运行情况灵活分配,这样能够最大限度地利用运算节点的能力。但同时又必须考虑到每次分配任务的系统开销,太多的子任务也必然增大系统中的调度消耗,因此取得这之间的平衡是分割的关键因素。从笔者的实验来看,选择运算节点数目整数倍的分段数量可以最大限度地同时利用多个运算节点共同完成转码任务,可以想象在相同性能的运算节点不出现意外死机等现象而能够保持系统正常运转时,这样的结论是合理的。
根据上述分割片段大小的分析可以发现,有一条重要的切割依据是集群设备的数量。
从图8中可以明显地看到转码时间随终端个数而减少的趋势。这样的减少是有一定前提的,即转码的目标数据大小相同,且分割的子视频个数也是相同的。根据以上数据,可以得到的结论是:转码时间在转码源数据一定时随集群终端个数的增加而减少。图8中的黑色虚线是根据现有数据所拟和的二次曲线,并作了适当的延展,可以
图8中的数据表明,当集群数量达到一定规模之后,完全可以超过单机软件转码的效率。之所以在集群数量较少的情况下多机转码反而比单机的时间更长,是因为集群调度系统在任务调度上的时间消耗延长了任务执行时间。这些时间损耗包括:DAG机制的初始化时间和数据的网络传输时间。
当然,转码时间肯定不会随终端个数的增加而不断减小,在终端数目增加到一定程度时,必然对本地网络传输产生相当的压力,并由此产生了瓶颈,导致转码时间趋于饱和,甚至反向增加。
5 结论
本文的集群转码系统对于广域网在线制作这样的由服务端承担主要运算工作的应用来讲,不但能够提高系统对单个用户的响应速度,还能够帮助提高设备的利用率,减少设备投入,因此本文所设计的集群转码系统将对在线编辑应用具有很大的价值。
摘要:根据广域网环境的在线节目制作系统的需求,设计了一种集群转码系统。该系统采用基于Condor的集群运算调度机制,结合对视频数据的有效分割,完成多运算节点同时对一个节目素材的转码计算。重点介绍了集群转码系统的总体设计思路以及实现方式,包括软件部分任务生成、转码程序、结果生成等模块的实现细节。系统测试数据说明了集群系统中视频分割大小以及集群节点数目等关键因素对系统运行效率的影响。
关键词:集群转码,计算调度,视频分割,视频转码
参考文献
[1]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(17):560-576.
[2]Condor Team.University of wisconsin-madison,condor version6.8.3manual[EB/OL].[2009-05-20].http://www.cl.cam.ac.uk/manuals/condor-V6_8_3-Manual/.
[3]SANBE Y,WATANABE S,YU Dong,et al.High-speed distributed video transcoding for multiple rates and formats[EB/OL].[2009-05-20].http://www.anarg.jp/achievements/web2005/papers/sambe05IEICE-transcoding.pdf.
[4]赵坚勇.电视原理与接收技术[M].北京:国防工业出版社,2007.
离线转码器图像质量主观评价方法 篇6
1视频质量主观评价方法
长期以来, 无论是模拟视频还是数字压缩编码视频, 人们都是采用主观评价方法来评估视频图像质量, 国际和国内都有成熟的技术和标准。通常, 视频质量主观评价就是选择一批非专家类型的受测者 (15人以上) , 让他们在一个特定受控环境中, 连续观看一系列测试序列10至30分钟, 然后采用不同方法让他们对视频序列的质量进行评分 (表1为视频主观评价得分标准) , 最后求得平均意见分 (Mean Opinion Score, MOS) , 并对所得数据进行分析。测试环境中的受控因素包括:观看距离、观测环境、测试序列的选择、序列的显示时间间隔等。根据不同的测试环境、测试目的, 有下列几种视频主观质量评价方法:DSIS、DSCQS、SSM、SSCQE。所有这些主观评价方法都有其优点和局限性, 目前还没有一种通用性强的主观评价方法, 在实际应用中, 往往依靠研究者自身的判断去选择适合实际情况的主观评价方法。
2改造的主观视频评价方法
2.1测试目的
首先, 本测试旨在从两套转码方案中选出转码质量更优秀的 (高质量低码率) 转码方案。其次, 通过改变一些重要参数, 在胜出的转码方案中选择更适宜 (质量和效率之间寻找一个平衡) 的转码参数。最后, 与OTT视频进行比较, 得出视频效果不低于OTT视频质量的转码参数。
2.2测试环境的搭建
(1) 准备两台相同型号65寸高清电视机, 并将电视并排放置, 间隔距离小于20cm。受测人员在电视前分左右两列坐好, 人眼距离电视1.5~5m, 测试期间受测人员左右交换位置, 也可以任意走动观看视频。
(2) 选择两台相同型号的机顶盒 (硬件配置及视频播放器相同) , 分别与两台电视机连接, 播放相同质量的高清电视直播节目, 根据受测人员的反馈, 调整电视或机顶盒的视频输出参数 (电视机视频模式、对比度、亮度、色温) , 至两台电视机输出视频质量主观对比结论相同。
(3) 将拷贝有测试视频的两个U盘分别连接测试机顶盒, 使用机顶盒的视频播放功能进行播放对比。用一个遥控器对两个机顶盒进行操作, 方便确保两个视频播放进度同步。
2.3测试方法
(1) 受测人员10人以上, 视频播放人员一人。
(2) 组织者依据测试目的, 准备好待测视频及测试顺序。
(3) 向受测人员发放测试表格, 表格如表1所示。受测人员在每轮对比中选择视频质量优秀的那个。
2.4视频准备
(1) 选择一部亮度明暗适中、色彩丰富的电影作为视频源, 这样能全面有效地验证转码质量的优劣, 避免因光线或颜色过于单一造成的局限性。
(2) 针对多屏视频业务, 分别用不同的编码方案将给定视频源转成视频带宽为3.5Mb/s、2.5Mb/s、1.5Mb/s、0.8Mb/s的视频。通过调整视频分辨率、CBR/VBR、one/two pass、质量等级 (某一编码方案中参数) , 生成20分钟左右的视频段, 其他非常用参数如GOP长度、B帧、P帧、视频级型等默认采用方案提供商的建议, 还有一些参数如帧率、长宽比则采用“跟随源”的方式。
(3) 选择电视猫中乐视片源作为OTT业务对比视频, 其清晰度分别为乐视超清、乐视高清、乐视标清, 其中乐视超清为最高清晰度。
3测试结果
3.1转码方案对比
经过统计, 去掉无效数据, 转码甲方案优于乙方案。
(1) 在四种视频码率的对比中, 转码甲方案的视频清晰度均高于乙方案。
(2) 转码速度。在采用同一视频源和相近转码参数进行比较时, 甲方案转码速度能达到15.7X (较长时间运行时能稳定达到20X) 。若想进一步提高质量, 则要降低速度, 那么把转码速度降低到9.5X。B方案转码效率为0.9X左右, 采用较高的服务器硬件配置, 其转码效率不超过2X。
3.2甲方案转码的最优参数
通过改变甲方案中的转码质量等级、one/two pass、小码率CBR/VBR、1080P/720P中一项参数, 进行对比发现:
其他参数固定, 当视频码率为3.5Mb/s, 视频分辨率为720P时质量好于1080P;只改变one/two pass, 差别不明显;视频码率为0.8Mb/s时, CBR质量好于VBR质量。
3.3与OTT视频比较结果
与OTT视频比较结果如表2所示。
3.4转码主要参数
结合运营商片源及网络条件现状, 建议转码后的视频片源基本参数如表3所示。
4结语
在测试中发现, 当一些前提条件成立时, 有些实际测试结果并不完全符合理论结果, 如小码率视频时VBR质量低于CBR视频质量, 当视频带宽为3.2Mb/s时, one pass和two pass之间差别并不明显。当然这不能完全排除测试过程产品的误差。值得注意的是, 在选择编码方案和确定编码参数时, 一方面要具体结合转码器及终端芯片给出最优的转码方案;另一方面, 要结合运营商自身实际情况, 平衡质量和效率。由于时间、环境等原因, 本次测试有些地方不够严谨, 样本源不够丰富 (应尽量准备不同类型的视频如电影、电视剧、童话片、风光纪录片、体育赛事等) , 不同类型的视频可采用不同的转码参数配置。OTT对比源单一, 可以对比爱奇异、搜狐视频等客户端。
参考文献
[1]王新岱, 杨付正.视频质量的主客观评估方法研究[J].电视技术, 2003 (8) :81.
[2]国家广播电影电视总局广播科学研究院电视研究所.GY/T 134-1998数字电视图像质量主观评价方法[S].北京:国家广播电影电视总局标准化规划研究所, 1999.
快速转码 篇7
关键词:二-十进制(BCD),可逆转码器,FPGA,逻辑单元,TPD
0 引 言
在数字系统的数据输入、运算、输出过程中,输入和输出常用十进制形式表达;而在系统内部采用二进制表示和处理数据则更为方便,因此在二进制和十进制数据间的转换就是非常必要的[1]。此外,数控机床、智能仪表、电子秤和数码管等显示设备也会频繁地用到十进制(BCD)码与二进制(BIN)码的相互转换。目前,数字系统中BCD码和BIN码的相互转换有3类实现方法,首先是采用软件算法的实现方式[2,3],传统的是用DAA调节指令实现,但效率较低,不能满足一些实时应用的要求。其次是纯硬件运算实现方式[4,5,6,7],这种实现方式是数据转换运算到硬件的直接映射,常采用逻辑运算和数据移位来实现数据转换,转换效率较高,可以根据输入数据位宽进行转换器的位数扩展和重构。但是在转换数据位数较多时,运算量会显著增加、硬件实现代价也较大、路径延迟也会增大、整个转换器的时序控制也会变的比较复杂,也很难做到可逆转码运算。最后是基于数据查找表(Look Up Table, LUT)的实现方式[3,7,8],也就是先把全部或部分转换数据列表存储在存储器中,然后再根据转码器的输入数据(地址码)直接或间接地从存储器中取出所需的输出数据,这种以查找表为核心的转换器运算速度快、算法直接简单;但是会需要大量的存储器;并且这种实现方法往往是针对具体的转换数据位宽和单一转换方向来定制存储器(ROM)容量和存储器初始化数据;一旦需要转换的数据位数和方向发生变化,就根本无法实现转换器的数据位数扩展和结构重构,所有的设计就必须重新开始。
基于FPGA的可逆数制转码器设计,充分利用FPGA的结构特点和硬件描述语言(Veilog HDL)的抽象和灵活性;二-十进制(BCD)转码器不但具有可配置双向转换数据的功能,而且还要求转码器简单、高效和易于位数扩展[4,5](模块化重构)。因此,文中就提出了一个高效、易于重构的二-十进制(BCD)可逆转码器设计方案,通过端口参数配置和模块重构就能实现不同位数的数据在二进制和十进制(BCD)之间相互转换,最后在FPGA(DE2)开发板上成功地进行了设计验证。
1 数制的转换算法
假设X=(xn-1,xn-2,…,x0)p表示n位p进制数据,Y=(ym-1,ym-2,…,y0)q表示m位q进制数据,二者之间等值变换的条件为[3,9]:
这里,X,Y所表示的数值范围分别是[0,pn-1]和[0,qm-1]。而在二进制编码体系下,要把一个n位p进制数据转换为m位的q进制数据就要求输入输出的数据位宽必须满足m=Ceil[n·logqp]=n·logqp,这里用“”表示整数上确界Ceil运算,输入输出数据位宽关系如图1所示。
图1中的din=Ceil[log2p]=log2p;dout=Ceil[log2q]=log2q分别表示1位输入输出数据的二进制位宽,例如1位的八进制数据需要3 b二进制数表示;而1位的十进制数据需要4 b二进制数表示,所以X→Y转化的输入、输出数据位宽(单位:b)分别为[3]:
8421BCD码是使用4 b二进制数表示1位10进制数(0~9)。如果把n位二进制数据转换成m位BCD码(4m位)就要求m位BCD码所能表示的最大数不小于n位二进制码所表示最大数,即10m-1≥2n-1,m≥Ceil[lg 2n]=n·lg 2。如果12位的二进制数转换成十进制(BCD),根据式(3)算出输出m位的十进制数据m=n·logqp=12·lg 2=4;输出数据位宽m·dout=m·log2q=16 b。
2 二-十进制可逆转码器设计
2.1 可逆转码器的层次化设计
在片上数字系统(SOPC)中实现二-十进制(BCD)码转换器,就要求设计者充分利用硬件(FPGA)的结构特点和硬件描述语言(HDL)所提供的设计灵活性;更好地实现转码器的简单、高效和结构易于扩展。为此,针对FPGA的结构特点提出了以下设计思路:以4 b数据转换作为基本的可逆转换单元来适应FPGA结构特点,而提高逻辑单元利用率、达到降低硬件代价的目的;利用Verilog HDL进行层次化设计描述,以4 b数据转换单元为最底层模块,构造出更大的5 b和6 b可逆转换单元(模块),这样会在不增加实现代价的前提下,实现使用大的转码单元模块来简化转码器的结构、方便转码器的位数扩展;这种设计方法就为二-十进制(BCD)可逆转码器的构建提供了4 b,5 b和6 b三种不同大小的单元模块,这会让每一个转换单元模块都使用到恰到好处(需要小模块的地方就不会使用大模块);有效避免了单元模块利用率不高的问题。
2.2 可逆转码器的功能模块设计
上述基于FPGA的二-十进制(BCD)可逆转码器设计方案,关键就在于要做好最底层模块(4 b转码模块)的优化设计,对4 b转码模块的不同Verilog HDL描述方式也会带来不同的实现代价;通过不同描述方式比较最终确定使用结构描述来实现4 b可逆转码模块(Bin/Bcd_4),根据参考文献[4,5,10],采用卡诺图和Multisim软件化简得到最简逻辑函数式如图2所示。再通过4 b转码模块层次实例化分别构造5 b转码模块(Bin/Bcd_5)和6 b转码模块(Bin/Bcd_6),如图3所示。
2.3 12 b可逆转码器的结构设计
根据二-十进制可逆转码算法[4,5,10],使用上节中得到的4 b,5 b和6 b三种二-十进制可逆转码单元模块,构造出12 b二-十进制(BCD)可逆转码器结构如图4所示,转码单元模块的多余输入端要接地,多余输出端悬空。整个转码器是基于功能模块的层次化结构,这很有利于转码器的位数扩展,也可以通过转码器的使能端BD/DB的取值分别实现从二进制到十进制和从十进制到二进制的数制转换。
3 二-十进制可逆转码器的设计验证
3.1 可逆转码器的时序仿真
使用Quartus Ⅱ 9.1(Full Version)开发工具;对于图4中二-十进制(BCD)可逆转码器,在Altera公司的FPGA(EP2C35F672C6)芯片上进行了设计验证,验证结果完全达到了既定的设计目标;时序仿真结果如图5所示。在图5(a)中,使能信号EN=0,转码器实现12 b二进制数向4位十进制(BCD)数据的转换,SW是输入12 b二进制数,LEDR是输出的4位十进制(BCD)数(15 b,最大值是4 095);在图5(b)中,使能信号EN=1,转码器实现15 b十进制数(最大4 095)向12 b二进制数据的转换,SW是输入15 b十进制数(BCD),LEDR是输出的12 b的二进制数。
3.2 可逆转码器的性能分析
使用Quartus Ⅱ 9.1开发工具和DE2开发板;对于所设计可逆数制转码器通过模块的参数配置,分别测试了转码器在完成8 b、10 b和12 b转码情况下的硬件实现代价(占用逻辑单元数LEs)和最大路径延迟(TPD),测试结果见表1。
表1表明,可逆转码器的数据位宽愈大转码器就越复杂,使用的单元模块就越多,实现代价增大,路径延迟也会增大,12 b可逆转码器的最高时钟频率只有50 MHz,而8 b的可逆转码器最高时钟频率可以达到75 MHz。
4 结 语
文中提出以3种功能模块来构造二-十进制(BCD)可逆转码器的设计方法,通过端口参数配置和模块重构就能实现不同位数的数据在二进制和十进制(BCD)之间相互转换。从而使基于FPGA的二-十进制(BCD)转码器的构建变得简单、灵活。可逆转码器在EP2C35F672C6芯片上的验证结果也充分证明了这种设计思路的可行性;如果进一步在转码器中插入寄存器而形成流水线结构,那么转码器的运算速度就会有更大提升。
参考文献
[1]赵峰,夏银水.基于快速二-十进制转换算法的智能水表专用控制芯片LCD接口设计[J].浙江大学学报:理学版,2010,37(2):156-158.
[2]NETO H C,VESTIAS M P.Decimal multiplier on FPGAusing embedded binary multipliers[C]//2008InternationalConference on Field Programmable Logic and Applications.Heidelberg:IEEE,2008:197-202.
[3]IGUCHI Yukihiro,SASAO Tsutomu,MATSUURA Mu-nehiro.On designs of radix converters using arithmetic de-compositions(binary to decimal converters)[C]//37th In-ternational Symposium on Multiple-Valued Logic.Oslo,Norway:IEEE,2007,15(12):1533-1544.
[4]王庆春,何晓燕.基于FPGA的二-十进制转码器设计[J].微型机与应用,2010,29(7):72-75.
[5]WANG Qing-chun,HE Xiao-yan,WAN Chang-xing.Anefficient and reconfigurable design of binary to decimal con-verter[J].Microcomputer information(Embedded Sys-tem),2010,26:142-144.
[6]SASAO T.Radix converters(complexity and implementa-tion by LUT cascades)[C]//35th International Symposiumon Multiple Valued Logic.Calgary,Canada:IEEE,2005:256-263.
[7]王迎春,吉利久.一种基于简单移位的二-十进制相互转换算法[J].电子学报,2003,31(2):221-224.
[8]邬杨波,胡建平,李宏.一种BIN码与BCD码转换电路的设计与实现[J].信息技术,2005(8):33-35.
[9]SASAO T.Analysis and synthesis of weighted-sum func-tions[J].IEEE Trans.on CAD,2006,25(5):789-796.