现在的位置: 首页 > 综合 > 正文

H264学习指南

2013年08月27日 ⁄ 综合 ⁄ 共 5693字 ⁄ 字号 评论关闭

 

H264学习指南(转载)

关键词H264                                          

    在写这个题目是,就感到有些战战兢兢,在这个论坛也混了一段时间了,说实话,并没有感觉在这里学到太多东西。而且觉得大家讨论问题的深度不及“视频设计芯片论坛”http://china264.68l.com/index.asp

 

因为最近手头的活基本搞完了,人也闲了下来,这么热的天气,突然想写这么一篇文章。不过首先声明的是我对H264并不是太熟悉。但多多少少也学习了这么久了,写点心得出来对自己是个交待,同时也希望给新手们一点帮助,只要对大家有一点点帮助,也就很满足了。

 

    好,闲话少说。如果大家是刚开始进入图象领域,那么先看一看"计算机图象处理"方面的教材还是有必要的.不过稍微了解一下就好了,不用太深入,在以后的对264的学习中,自然会对这些基本概念有进一步的了解.然后,是对264的了解,推荐3篇文章.

1、Halsted.Press.H.264.And.MPEG-4.Video. Compression. Video. Coding. For. Next. Generation。
   对视频编解码原理讲得比较详细
2、Video coding using the H.264 MPEG-4 AVC compression standard。
   更加关注于编解码的各个模块的实现方式
3、Overview of the H.264/AVC Video Coding Standard。
   是Thomas Wiegand的大作,对264较之以往标准的新特性都作了说明。

 

    这三篇文章绝对是了解264的经典文章,论坛上好像也有下载的地址。这些都是e文文章,不过相信对大多数人难度都不大。细心将这三篇文章看完。对264就有了一个比较清楚地认识了。对一个这么大的东西,不可能说要在短时间内全部搞懂它,因此就要根据当前自己的情况,选择一个具体的研究方向,比如说运动估计、熵编码等等。我现在以我自己的研究方向运动估计作为例子,来说一下我的学习方法,当然肯定有班门弄斧的嫌疑,但是既然大家都不认识我,我也就不客气了。

 

   从入门的3篇文章中可以看出,帧间编码(运动估计)是264的运算复杂度的“主力”部分。那么首先要对传统的那些运动估计方法作一个了解,如果是教育网的朋友再ieee的网站上拿motion estimation一搜就能搜到一大堆文章了,我的建议是选一篇比较新而且比较长的文章,就是那种regular paper 而不是short paper。这些文章中一般会对本研究方向的经典方法作一

个回顾和比较,这样,从这篇文章的参考文献中再进一步把本研究方向的历史和现状作一个了解。

 

    所谓对264的研究的话,基本上就是用更加好的算法来降低264本身的计算复杂度。能够做到不提高码率当然好,但码率稍微有点上升也没有关系,不过那就要在编码速度上有优势,这样就可以说“本方法利于实时实现“啦,哈哈。就运动估计来说,传统的3ss,4ss,ds都要知道是怎么回事,然后像被大家奉为经典的mvfast,pmvfast就要专心的看一下了。最好呢,是在这些方法上,能够提出自己的新观点、新方法。当然,这就不是一个纯粹看论文能够解决的问题了。大家需要对264的新特点有一个清楚了了解,然后考虑的方向可以是以前的方法应该怎么改善再用在264上,能够更好地发挥作用,向连续消方法,half-way
stop的方法,好像国内的都有人出论文。因为264的帧间预测采用了可变块大小,因此又引出了一个问题:按什么方法来分块是最好的?大家在看那3篇入门的文章时,就要边看边思考,里面说采用可变块大小,就要想到我怎么知道该怎么分块;里面提到4*4块帧内预测有9种模式,就要想到这9种模式如何决策。也就是说,大家再看这些文章时,要想一下,我该怎么去实现它。这些问题其实很容易就能提出来,但要解决却是一个大问题。

 

    比如说分块吧,VBSME(variable block size motion estimation),ieee上可有不少文章,台湾国立成功大学(?好像是这个名字)的一篇硕士论文就写的是这个,可见264有好多东西可以去做,养几个博士绝对绰绰有余啊,赫赫。其实研究方向越细,就能够对这个方向把握得越准确,成天看着,总会有些新想法出来吧,嗬嗬,开玩笑的说。选好了一个大的研究方向,然后就要知道现在这个方向大家都是在那些细节上做工作。像运动估计的话,多帧预测,可变块大小的分法,1/4像素估计精度等等都是热门的东西,那基本上来说,跟着大家走就好了。了解哪些东西是热门,基本上*多看文章,同时建议大家多看e文的,最好是ieee的。我的一个博士师兄告诉我说,如果你想发某一个档次的文章,你就应该看比这个杂志高一个档次的文章。而且他说一般看个15篇左右,就应该要能够出一篇自己的东西了。这个师兄现在毕业了,他发了好多EI的,羡慕!

 

    如果“不幸”有了自己的新想法,那么就需要验证了。简单一点的验证呢,可以放在c语言或者matlab平台下进行,但是如果要发论文的话,基本上还是要放在JM下才有说服力。而且试验序列最好采用标准序列。这既涉及到一个读JM源码和修改JM源码的问题。我看了一段时间,实在是好烦啊,所以,对不起,在这方面我没有太多好的建议。但是我在修改一个帧内预测算法时,反而把预测速度减慢了,哈哈,按照常理来说,我的方法应该比JM里的方法好才对,而且我在matlab下的仿真结果的确如此,很郁闷,希望大家推荐一个看源码的方法给我,谢谢先。

 

   除去以上说的这些,看标准也是很必要的。200503的那个prepublished版本好像是最新的,对于翻译标准,我认为不是太必要,但对了解标准也还是有点帮助,可以放在正常工作时间以外进行,如果大家有这么努力的话。

1、首先先到比较权威的XVID网站上下载 ,网页是:

http://www.xvid.org/downloads.html
    2、在WINDOWS下面编程的话,这里有一个VC6.0的下载连接:

http://downloads.xvid.org/downloads/xvidcore-1.1.0.zip

    3、具体的编译过程你可以到

http://www.chinavideo.org/index.php?option=com_content&task=view&id=127&Itemid=5
 

分三个阶段学习
1、第一个阶段:

学习H.264,首先要把最基本最必要的资料拿在手里。这些资料包括:标准文档+测试模型+经典文章,在本站中能找到。首先看《H.264_MPEG-4 Part 10 White Paper》(本FTP中在“H.264相关论文\其他\经典文章”目录中),看完之后再看《Video coding using the H.264 MPEG-4 AVC compression standard》(本FTP中在“H.264相关论文\其他\经典文章”目录中)和《Halsted.Press.H.264.And.MPEG-4.Video.Compression.Video.Coding.For.Next.Generation.Multimedia.eBook-LiB》(本FTP中在“H.264相关论文\其他\经典文章”目录中),然后可以抽空看《Overview
of the H.264_AVC Video Coding Standard.pdf》(本FTP中在“H.264相关论文\其他\经典文章”目录中)。这几篇文章看完后,你应该对H.264的整体框架有个比较深入的了解了。前三篇文章可能需要花费你两~三周的时间(对于我这样的笨蛋好像是要这么长时间的。如果你碰巧用了比这个时间还长的时间,那并不说明你比我更笨,只能说明你肯定天天陪MM聊天去了。呵呵~~~)。

 

2、第二阶段:

    

然后你就可以看代码了。这个时候你最常用的工具就是标准文档和测试模型(建议使用JM86)。看代码也有讲究。并不是像我开始那样看得那么仔细,结果后来才知道远没有这个必要。正如peter李说的:看代码也要先从整体框架入手。先搞懂H.264的整体框架在代码里是怎么分布的,一个功能模块的前伸模块和后继模块是什么。也就是搞清楚整个代码流程。这个阶段对标准文档的使用可能很少。

 

3、第三阶段:

      

然后你找到一个自己感兴趣的切入点,开始以此为中心研究这个问题。你研究问题的时候应该是联系测试模型来研究,这个时候你就需要仔细看代码中对这个问题的实现了。这个阶段我绝对支持你一行行代码跟踪,一个参数一个参数地跟踪。而代码中不懂的地方可能需要查标准。这时你再来看标准文档就有了针对性。也因为能将标准文档和代码对应起来,从而看标准文档也不觉得有太大困难,也能明白标准文档说的是什么问题,在测试模型中是如何通过代码实现的。在这个阶段中,会牵连到很多H.264的相关知识,这样通过以点带线,以线带面。你会对H.264的内容认识越来越多。而你也就找到了自己的方向,最终走上了缔造中国人的H.264的光辉大道,呵呵~~~

 

==========【注意事项】==========
1、切忌将代码和标准文档独立开看,否则,你的困难会很大(当然可能是因为我太笨了,对于“甜菜”的你可能无论怎样都能应用自如。呵呵~~~)。
2、对于刚开始接触H.264的人,切忌直接看代码和标准,哪怕是将标准和代码结合起来看,你也会不太顺利。换句话说:在没有了解H.264整体框架之前,你最好什么都不要做。
3、你千万不要觉得自己参加讨论,以及帮助别人找答案(当然是在你觉得别人问的问题你似曾相识的时候)是一个浪费时间的过程。因为你参加讨论,特别是你帮别人找答案的时候,很多你似是而非的问题却能够得到一个更深刻的认识。
4、学问,学问,即要问也要学。不要养成自己的依赖思想。其实你在自己查资料的过程中,也会学到很多东西。比如会知道某个问题在哪篇文章里能找到答案,或者收集到更多相关问题的有价值的文章……而且自己查到的到底比别人告诉的印象深刻。

5、读代码要讲究方法。码中有很多变量,不要一开始就去看头文件,想把里面所有变量都弄清楚是什么直接从 main 函数开始读 c 文件就可以了。遇到不懂的变量再去查头文件,如果头文件里没有说明,自己又理解不了的问其他人——不要养成依赖性。

PS :我所知道的三本讲H264的中文书籍
1、《H.264和MPEG-4视频压缩》:欧阳合(我看的英文原版,翻译过来的应该也不错)
2、《新一代视频压缩编码标准—H.264/AVC》:毕厚杰(书中有较多错误,但仍然值得买,建议只做参考)
3、《小波编码与网络视频传输》:沈兰荪,卓力 (个人觉得不错,有关于 high profile 的介绍)

 

 

http://www.vvou.com/   (中华视频网   Voice   Video   for   You!)  
            国内纯视频技术网站,文章与源代码资源较多(推荐)  

http://www.fastvdo.com/spie04/  
            H.264/AVC综述文章,包含了新的高精度拓展(Sullivan,   Topiwala,   and   Luthra)     
http://iphome.hhi.de/wiegand/pubs.htm  
            一些有关H.264/AVC的文章(Wiegand)     
http://iphome.hhi.de/marpe/pub.htm  

            更多的关于H.264/AVC的文章(Marpe)    
  http://iphome.hhi.de/suehring/tml/  
            H.264/AVC参考软件    
  http://www.vcodex.com/h264.html  
            H.264/MPEG-4   Part   10教程   (Richardson)    
  http://www.vcodex.com/h264mpeg4/  
            书:   H.264   and   MPEG-4   Video   Compression   (Richardson)    
  http://internet.impress.co.jp/books/1983/  
            H.264/AVC   教科书   (日文:   Okubo,   Kadono,   Kikuchi,   and   Suzuki)    

  http://ftp3.itu.ch/av-arch/jvt-site  
            JVT   Experts   Group   文档    
  http://www.mpegla.com/news/n_03-11-17_avc.html  
            MPEG   LA   关于H.264/MPEG-4   AVC专利授权的条款    
  http://www.videolan.org/x264.html  
            一个基于GPL的H.264编码库,支持大部分H.264的功能    
  http://www.m4if.org/  
            MPEG工业论坛    
  http://www.itu.int/rec/recommendation.asp type=folders&lang=e&parent=T-REC-H.264  

            ITU-T   官方网页    
  http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail CSNUMBER=40890&ICS1=35&ICS2=40&ICS3=   H.264  

            ISO   官方网页    
  http://www.wwcoms.com/technology/standard.htm  
            W&W   Communications   H.264   概述和IEEE文章    
  http://www.apple.com/quicktime/hdgallery/  
            苹果公司H.264素材实例

抱歉!评论已关闭.