H.264视频转码的设计与实现 文献综述.doc

上传人:scccc 文档编号:11248700 上传时间:2021-07-17 格式:DOC 页数:23 大小:44.50KB
返回 下载 相关 举报
H.264视频转码的设计与实现 文献综述.doc_第1页
第1页 / 共23页
H.264视频转码的设计与实现 文献综述.doc_第2页
第2页 / 共23页
H.264视频转码的设计与实现 文献综述.doc_第3页
第3页 / 共23页
H.264视频转码的设计与实现 文献综述.doc_第4页
第4页 / 共23页
H.264视频转码的设计与实现 文献综述.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《H.264视频转码的设计与实现 文献综述.doc》由会员分享,可在线阅读,更多相关《H.264视频转码的设计与实现 文献综述.doc(23页珍藏版)》请在三一文库上搜索。

1、-范文最新推荐- H264视频转码的设计与实现+文献综述 摘要随着多媒体应用的发展,越来越多的场合要求视频数据能在不同格式、不同标准间进行交换。为了使得异构网络之间、不同种类的接入设备之间能够无缝连接,需要研究压缩视频流之间的转码。不同时期、不同用途的多媒体终端使用多种不同的视频编码标准,要实现它们之间的互连互通,也必须研究视频编码转换算法。H.264是由ITU-T和ISO/IEC联合成立的小组JVT提出的新的视频编码国际标准。该标准采用了一系列先进的视频压缩编码算法,与以往标准相比,压缩性能有了很大提高,成为多媒体业务应用中广泛采用的视频编码标准。在综合比较了当前主流视频编码标准的特点之后,

2、本分析了H.264作为下一代视频编码国际标准在技术、性能以及产业发展方面的优势。在深入研究H.264关键技术的基础上,分析比较了H.264标准的若干开源参考模型的综合性能,最终选择了JM10.1来搭建转码平台。6495关键词:H.264视频转码视频编码标准视频转码平台JM10.1 毕业设计说明书(论文)外文摘要Design and Implementation of H.264 video transcodingAbstractWith the development of multimedia applications, more and more occasions require the

3、 video data can be exchanged between different formats and different standards. The sake of making heterogeneous network between the different types of access equipment to seamlessly connect, you need to study between the compressed video stream transcoding. Different times, different uses of multim

4、edia terminals using a variety of different video coding standard, to achieve the interconnection between them must also be video transcoding algorithm.H.264 is a new video coding JVT of the group set up jointly by the ITU-T and ISO / IEC international standard. The standard uses a series of advance

5、d video compression algorithm, compared with the previous standard, the compression performance has been greatly improved and become widely used video coding standard multimedia business applications. After comprehensive comparison of the current mainstream video coding standard features, this paper

6、 analyzes the advantages of H.264 as the next generation of video coding international standards in technology, performance, and industrial development. Compared on the basis of the key technologies in-depth study of H.264, the H.264 standard open-source reference model performance, and ultimately c

7、hose JM10.1 to set up transcoding platform. 5.1开发环境简介305.2转码程序简介30结论34鸣谢35参考文献361引言随着近几年数字信息技术的飞速发展,人们日渐步入一个信息化的社会。人们希望无论何时何地都能够方便、快捷、灵活地通过语音、数据、图像与视频等多种方式进行通信。视觉信息给人直观、生动的形象,因此图像和视频的传输受到了人们的广泛关注,诸如可视电话、视频会议、视频监控、高清晰度电视(HDTV)、视频点播(VOD)、移动电视、远程教学和远程购物等极大地丰富和便利了人们的日常生活和工作。随着互联网技术的发展,通过网络传输获得各种标准格式的媒体数

8、据就成为人们日常生活中必不可少的内容。目前,市场上比较流行的多媒体产品通常采用MPEGl、MPEG2、MPEG4和H.261与H.263标准的格式存储。那么如何将现有的多媒体资源转换为能够满足用户需求的数据流就成为一个主要问题。由于不同的网络带宽的限制,设计的网络也各有特色,同时终端的显示能力、处理器能力和内容存储量也不一样,因此需要根据当前的网络条件、终端和用户的特征传送一些视频内容,此时进行不同格式码流的转码就是实现符合网络条件和用户定制数据流传输的有效途径。转码是将已有的压缩视频转换成满足当前网络条件、终端能力和用户需求的另一种压缩视频。因为视频转码非常灵活,可以满足各种不同的需求,而且

9、视频转码技术用于媒体网关,不需要终端用户增加额外的开销,所以视频转码技术具有很高的研究价值和良好的市场前景。1.1课题背景及研究意义 1.3.2论文结构安排第一部分为本文的引言部分,介绍了视频转码的背景和研究意义,以及视频编码标准的发展现状,最后简单介绍了本人在毕业设计期间的工作内容和论文结构安排。第二部分主要对H.264视频压缩标准进行简要的介绍。第三部分讨论程序的设计方案以及介绍JM编解码器主要流程。第四部分主要介绍搭建的两种转码类型跳帧转码和降码率转码,并讨论了相关参数对图像的影响。第五部分介绍基于JM10.1源码编写的MFC视频转码程序,并演示程序的部分功能。最后是总结,鸣谢以及论文的

10、参考文献。2H.264视频压缩编码标准介绍2.1H.264标准特点H.264标准是由JVT(Joint Video Team,视频联合工作组)组织提出的新一代数字视频编码标准。JVT由ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)两个国际标准化组织的专家联合组成,其工作目标是制定一个新的视频编码标准,以实现视频的高压缩比、高图像质量、良好的网络适应性等目标H.264标准。H.264标准将作为MPEG-4标准的一个新的部(MPEG-4 part.10)而获得批准,是一个面向未来IP和无线环境下的新数字视频压缩编码标准。H.264标准的主要特点如下:1.更高

11、的编码效率:同H.263、MPEG-4等标准的特率效率相比,能够平均节省大于50%的码率。2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4×4二维整数变换等新的编码方式,提高了编码效率。 H.264着

12、重在压缩的高效率和传输的高可靠性,其应用面十分广泛,具体说来,H.264支持三个不同档次:1)基本档次:利用I片和P片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;2)主要档次:支持隔行视频,采用B片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;3)扩展档次:支持码流之间有效的切换(SP和SI片)、改进误码性能(数据分割),但不支持隔行视频和CABAC。图2-2为H.264 各个档次具有的不同功能,可见扩展档次包括了基本档次的所

13、有功能,而不能包括主要档次的。每一档次设置不同参数(如取样速率、图像尺寸、编码比特率等),得到编解码器性能不同的级。图 2-2 H.264 档次2.3H.264编解码器框架与之前的视频编码器一样,H.264编码器仍然采用变换与预测相结合的混合编码法,只不过各功能模块的细节有所不同。常用的H.264编码器与解码器的基本组成部分如图2-3以及图2-4所示。图 2-3 H.264 编码器框图在图2-3中,编码器输入源图像为YUV格式,将输入的图像与预测得到的图像进行求差获得图像的像素残差,并接着对残差进行整数变化、量化、之字排序以及熵编码,转换为串行比特流输出到文件或者网络缓存中。同时为了得到参考图

14、像,编码器需要重建图像。编码器在像素残差量化后立即进行反量化、反整数变换以及去块效应滤波,从而得到重建图像并将其存入到参考帧缓冲区中。H.264的预测方式分为帧内预测以及帧间预测,其中帧内预测通过左边以及上边的重建宏块对当前宏块进行预测;而帧间预测则通过运动估计以及运动补偿从当前帧之前的图像以及后面的图像中搜索匹配块来对当前块进行预测。 (b)帧内4×4 预测的8个预测方向根据预测方向的不同4×4亮度预测可分为9种模式。其中DC预测(模式2),垂直预测(模式0)和水平预测(模式1)总是有效的,即使在上面像素或左边像素不可用情况下(这时上面像素或左边像素的值用128来代替

15、)。而其他模式仅在所有需要利用的预测像素点都可用的情况下才可以使用(如果E,F,G,H不可用,可以用 D的值来代替)。具体这9种预测模式如图2-6所示。图 2-69种亮度4×4预测模式2.4.216×16 亮度预测模式宏块的全部16×16亮度块可以整体预测,有4种预测模式:Mode 0垂直预测、Mode 1水平预测、Mode 2 DC预测和Mode 3 plane预测,预测方向如图2-7所示:图 2-7亮度16×16预测模式2.4.38×8 亮度预测模式每个帧内宏块的8×8色度块由己编码左上方色度像素预测而得,两种色度成分

16、用同一种预测模式。4种预测模式类似于亮度16×16预测的4种预测模式,只是模式编号不同,其中DC(模式0)、水平(模式1)、垂直(模式2 ) , plane(模式3)。2.5帧间预测视频图像相邻两帧的内容有许多相似性,比如图像的背景(见图2-8 ),这表征了视频信息的时间冗余。帧间预测就是通过利用临近若干帧图像中的相同(相似)部分的数据来预测当前帧中的相应数据,然后对预测数据与实际数据的差值(残差)进行编码,当预测的精度很高时,残差趋向于零,只需很少的数据位即可完成编码,达到大幅压缩视频数据的效果。为了使预测更精确,H.264引入了多帧预测、分数像素精度运动估计等思想,预测方向有单

17、向、双向、混合等数种方式。H.264标准吸收了H.263+中的多参考帧技术,在对快速的周期性运动、背景相互切换、物体存在遮蔽现象等情况进行预测时,多参考帧可以提供更好的帧间预测效果,使得在帧间预测时预测误差更小。参考图像最多可达15帧。帧间预测是H.264编码算法的关键,以下介绍帧间预测的各种技术。 运动补偿时,为了提高运动补偿的精度,H.264引入了分数像素精度预测,这需要对分数像素点进行内插。如果运动矢量是整数,则直接获得像素值。如果运动矢量不是整数,则通过像素内插获得分像素值。该像素值作为预测值和反变换值相加获得解码值,图2-10给出了亮度像素1/4精度内插示意图(其中大写字母表示整数位

18、置像素点,小写字母表示分数位置需要内差的像素点)。图 2-10亮度像素1/4精度内插示意图首先生成半像素点,半像素点(如b, h )通过对相应整像素点进行水平和垂直的6抽头滤波得出,权重为(1/32, -5/32, 5/8, 5/8, -5/32, 1/32)。例如b计算如下:4个整像素点中间的半像素点(如j)需进行水平和垂直两次插值后得出,因此的生成涉及到周围36个整像素点。1/4像素值由整数像素和半像素点求均值取得,例如:相应地,色度像素需要1/8精度地MV,也同样通过整像素点通过双线性内插得出。2.5.3MV预测每个像素快都需要一个对应的MV来表示其运动矢量,当帧间预测大量采用小尺寸像素

19、块进行运动估计时,将会需要相当数量的比特对MV进行编码,将会降低对视频信号的压缩率。为了减少这样的额外开销,H.264标准引入了MV预测的机制,利用相邻块的MV具有相关性的特点对MV进行预测。预测的运动矢量MVp由之前之前编码的相邻块的MV和差值MVD计算得到,计算方法取决于运动估计时采用的分块大小和相邻块MV。通过这样的方式,可以大大减少因为编码MV而带来的压缩性能的额外损失,从而提高压缩的效率。2.6整数变换技术H.264中使用了三种变换方法:第一种为4×4的整数变换,针对亮度信号和色差信号的差值;第二种为4×4的哈达玛(Hadamard)变换,针对16×

20、;16的帧内预测模式下亮度信号经4×4整数变换后得到的直流系数组成的4×4矩阵;第三种为2×2的哈达玛变换,针对色差信号经4×4整数变换后得到的直流系数组成的2×2矩阵。作为H.264的一个基本编码单元,每个16×16的宏块需要对24个4×4的块进行整数变换,并对两个2×2的块进行哈达玛变换,当宏块采用帧内16×16预测时还需要再进行一次4×4的哈达玛变换,如图2-11所示。 另外,同MPEG-4和H.263的后置滤波不同,环路滤波是作为编码器的一部分直接对编码器端的参考图像

21、进行的,是H.264标准的一部分,与仅仅作为后处理的解码器端的去方块滤波相比,环路滤波在改善主观质量的同时还可以有效地提高编码器的编码效率。2.9熵编码技术H.264提供了两种变长编码方式供选择:基于上下文的变长编码技术(CAVLC)和基于上下文的二进制自适应算术编码技术(CABAC)。在以前的标准中,控制信息、运动信息和量化后的变换系数多采用霍夫曼编码,使用静态的概率估计码表,这样就忽略了不同视频流在统计特性上的区别,也忽略了待编码符号之间的相关性,而CAVLC通过上下文信息(如相邻块的非零系数个数)来动态的选择相应的码表,进一步挖掘了4×4块DCT变换后的残差系数的统计特性来提

22、高压缩效率。CABAC通过建立上下文模型并自适应地更新待编码符号的统计特性解决了这两个问题。另外,采用CABAC,每个符号可以用精确到小数的比特数来表示,能够更有效地逼近符号的熵。采用CABAC算法进行编码,可以提高大约10%的编码率。3设计方案和JM代码分析3.1H.264开源编解码器分析与比较目前视频压缩编码器设计研究人员可以参考的H.264开源代码库主要包括JM、t264以及x264,这三个开源代码库也是目前最完整的,参与研究的人数最多,并不断进行更新的H.264自由软件库。由于软件定位不同,三个开源库对H.264的支持程度以及压缩性能也各具特点。联合编码模型JM是2002年2月起联合编

23、码组JVT伴随H.264标准推出的标准C语言实现的官方参考软件。JM参考软件严格地按照H.264标准定义的码流语法结构规范,支持H.264标准中提出的各个级别的所有选项,并在编码器中引入JVT关于模式选择,运动估计以及码率控制方面的研究结果,对JVT编码器不断进行算法级别的优化和改进,使得该编码器能够得到相同PSNR下最高压缩率的H.264码流。作为官方标准的编解码参考模型,JM给世界各地视频编码算法研究者提供了一个交流的平台,研究者们将相关改进的算法在JM平台上实现,并以此为基础进行相关测试以及比较,来衡量该算法的改进效果。但同时由于JVT没有从代码级别对JM进行优化,故造成该参考软件的代码

24、结构过于冗余,执行效率低,难以在其基础上进行优化以实现较高分辨率的实时视频编码器。 下表给出了上述几个参考模型的综合对比。JMX264T264语言CC、X86汇编C特点官方测试代码,按照标准组织软件结构注重实用,没有实现解码器具有基C64X+DSP的版本标准兼容性完全兼容没有完全实现解码器不兼容可移植性很好较低很好速度非常慢较快很快图像质量较高高低从上表可以看出,x264没有实现解码器;T264虽然可移植性、解码速度都很有优势,但是其解码器没有兼容性,只能解码T264编码器输出的码流,这必将影响其应用的广泛性。经过综合比较,本文最终选择基于JM10.1进行H.264转码器程序的实现,因为JM模

25、型完全基于C语言实现,具有结构清晰、易于分析、移植方便等特点。3.2JM编码器分析经过分析,JM编码器的主流程如图3-1和图3-2,函数Init_img()初始化Img参数,并给其中的就某些member分配内存,allocate memory for frame buffers用来放把重建帧进行1/4内插后的图像,函数init_global_buffers()为全局变量分配内存,函数Init_Motion_Search_Module()设置mv_search时候的参数,比如搜索范围。函数start_sequence()根据输出的模式,确定写nalu的方法,写sps,pps到输出文件中。在进行相

26、应的初始工作之后循环调用encode_one_frame()函数,对原始视频序列的每一帧进行编码处理。图3-1 JM编码主函数流程图3-2JM编码器主流程 decode_one_slice()流程:decode_one_slice()为片解码函数。首先set_ref pic_num()初始化参考帧序列。然后进入循环,对每一个宏块解码。Start_macroblock()初始化当前宏块,read_one_macroblock()中包括熵解码、宏块类型解析、预测模式解析、MVD计算、CBP(CodedBlock Pattern)计算、残差解码等。decode_one_ macroblock()包括

27、反变换、运动补偿、像素重构等。read_new_macroblock()流程: read_one_macroblock()函数首先初始化一些参数和变量。接着根据宏块类型的不同采用不同的interpret_mb_mode()函数来对宏块进行解析,如I, P, B, SI宏块。然后判断该宏块是否为8×8子宏块分割,如果是,则解析子宏块分割模式。Init_macroblock()函数主要作用是对亮度块中16个4×4块的预测模式、运动矢量进行初始化。然后IS_DIRECT判断该宏块是否B_kip类型宏块,如果是,则按相应算法处理。接着IS_COPY判断该宏块是否COPY类型宏块

28、,如果是,则按相应算法处理。下一步,read_ipred_modes()从比特流中读取亮度块和色度块的预测模式。以亮度块为例,读取时是以4×4块为单位读取的,读取顺序如图3-5所示:图 3-54×4块处理顺序IS_INTERMV判断该宏块是否帧间编码宏块,如果是,则通过函数readMotionInfoFromNAL()从码流中读取运动矢量残差。最后是分别对亮度和色度宏块进行CAVLC熵解码。解码最小单位是4×4块,每个4×4块在16×16宏块中解码顺序由图3-5给出。decode_one_slice()流程:decode_one_ma

29、croblock()首先针对亮度块解码,之后对色度块解码。首先判断宏块是否采用16×16帧内预测,如果是,则通过函数intrapred_luma_16x16()解码。然后对一个16×16宏块中的每个4×4块分别解码,每个块的解码顺序如图3-5所示,直到所有块解码完成为止。解码4×4块时,首先判断是否为帧内编码,如果是,则通过函数intrapred对4×4块帧内解码。如果是帧间编码,则还要判断是P或是B帧。找到参考帧的匹配块后,用get_block()像素内插恢复像素值。itrans()对当前块的残差进行反变换,然后再将反变换值和预测值相加得到重构值。接着,将该重构值赋给dec_picture->imgY保存。其中dec_picture是一个用来存放解码值的解构体,其成员imgY存放亮度解码值。最后是色度块解码。由于色度块解码和亮度块解码流程基本相同,在这里省去。 (6)使用CABAC编码。将编码得到的“test.264”文件用JM解码器进行解码,得到的视频序列与原始序列对比,截取原始视频序列第50帧到59帧图像和转码后视频序列第25帧到29帧的图像对比如下: H264视频转码的设计与实现+文献综述(10): 23 / 23

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1