H264学习方法历程资料

我的H.264学习历程

 半年前,我知道了H.264这个名词。那个时候决定学习H.264,可是我连资料都不知道如何收集。而且整个学校就只有我一个人在学习H.264,

找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网上认识一个学习H.264的同志真的是一件让我很高兴的事。

       后来慢慢在网上找到了一些介绍H.264的文章,当然也找到了peter李的网站,找到了流媒体论坛。那个时候在论坛里看见别人问的问题

,我都完全不懂。看见别人要这样资料要那样资料,我也不知道这些资料怎么能够用得着。最有趣的是我居然把JVT的会议文章全部下载下来了

——当时并不知道这几百兆的东西到底怎么用,现在倒是知道它的用处了,看来还是没有白下,呵呵~~~。
 
      一开始就想,先看看标准吧。因为标准是英文的,又特别长。所以为了避免看了后面忘记了前面,我就开始翻译,看一段翻译一段。可

是这个过程真的是又枯燥又痛苦。而且看着300多页的东西,要像这样来看完,还真是没有勇气和信心。想了想还是算了吧,看源代码吧。当时

因为知道JM是标准的测试模型,所以就看JM 了。一开始看代码可是很老实的,每句程序,每个变量都跟踪。等把读入参数、初始化变量跟踪完

了,才知道,这一段没必要看那么细致,完全可以跳过的。

       就这样看代码看不懂的时候就查标准、去流媒体论坛问。可是论坛有好处也有坏处,好处是可以有很多人参与,坏处是你问的问题无论

怎样都不可能马上知道答案,于是一般来说对你继续读代码就是一个阻碍。于是去找H.264的QQ群,很高兴找到了“H.264家园”,可是随后很

失望——见不到人问,也见不到人回答我的问题。于是,生气了,自己建了一个群,这样终于有了一个比较好的交流环境。可是那个时候的

H.264在我看来还只是一个遥不可及的华丽殿堂。QQ群里大家讨论的问题我仍然不懂。而我为了能尽快弄个像样的题目来作为毕业论文,那个时

候也没有继续看H.264的内容,只不过花了一个半月的时间来实现一个在今天看来比较肤浅的错误隐藏算法(因为我给自己定的方向是错误隐藏

)。

       等到我的这篇论文完成已经是9月中旬了,而这个时候对H.264仍然是那么陌生。因为这段时间没有继续看H.264的内容,以前看过的内

容,本来理解就不透彻、印象也就不深,所以基本上都忘记了。所以这个时候的我可以说对H.264还处在只是知道个概念的阶段。H.264实在是

个庞大的东西,而对于中国人来说,它又是如此的新(个人认为),大面积的商用都还没有开始。我要想在毕业之前在这里面做点有价值的东

西在当时看来实在不太可能,于是只有硬着头皮继续研究自己的错误隐藏,希望能给自己的毕业论文增加一点分量。这样就开始看JM关于帧间

错误隐藏的代码。因为JM帧间错误隐藏比帧内的复杂得多,涉及到很多相关的问题。所以在看代码过程中也要对这些问题做一些了解,再加上

QQ群里的经常讨论,让我真正开始了学习H.264的起步。

       等我把帧间错误隐藏看完,已经是10月底了,而这个时候正好我们学院要搞一次学术研讨会。为了能给自己的毕业和以后找工作增加一

点砝码,我决定参加。于是开始准备会议报告,通过准备会议报告,让我对H.264的整体框架又一次做了回顾和熟悉。时间终于走到了今天,我

很高兴地感觉到,自己已经站在H.264 的门口了——总是有进步的。呵呵~~~

现在自己对学习H.264也有了一些自己的想法,所以写出来和大家一起探讨:

1、第一个阶段:

学习H.264,首先要把最基本最必要的资料拿在手里。这些资料我都放在群共享的《H.264学习必备》(这是我自己打的一个压缩包,内容包括

:标准文档+ 测试模型+经典文章)里了。怎么使用《H.264学习必备》呢?首先看里面的《H.264_MPEG-4 Part 10 White Paper》,看完之后

再看《Video coding using the H.264 MPEG-4 AVC compression standard》和《Halsted.Press.H.264.And.MPEG-

4.Video.Compression.Video.Coding.For.Next.Generation.Multimedia.eBook-LiB》,然后可以看《Overview of the H.264_AVC Video

Coding Standard.pdf》。这三篇文章看完后,你应该对H.264的整体框架有个比较深入的了解了。这个时间可能只需要花费你两周左右的时间

(对于我这样的笨蛋好像是要这么长时间的。如果你碰巧用了比这个时间还长的时间,那并不说明你比我更笨,只能说明你肯定天天陪MM聊天

去了。呵呵~~~)。


2、第二阶段:

然后你就可以看代码了。这个时候你最常用的工具就是《H.264学习必备》里的标准文档和测试模型。看代码也有讲究。并不是像我开始那样看

得那么仔细,结果后来才知道远没有这个必要。正如peter李说的:看代码也要先从整体框架入手。先搞懂H.264的整体框架在代码里是怎么分

布的,一个功能模块的前伸模块和后继模块是什么。也就是搞清楚整个代码流程。这个阶段对标准文档的使用可能很少。


3、第三阶段:

然后你找到一个自己感兴趣的切入点,开始以此为中心研究这个问题。你研究问题的时候应该是联系测试模型来研究,这个时候你就需要仔细

看代码中对这个问题的实现了。这个阶段我绝对支持你一行行代码跟踪,一个参数一个参数地跟踪。而代码中不懂的地方可能需要查标准。这

时你再来看标准文档就有了针对性。也因为能将标准文档和代码对应起来,从而看标准文档也不觉得有太大困难,也能明白标准文档说的是什

么问题,在测试模型中是如何通过代码实现的。在这个阶段中,会牵连到很多H.264的相关知识,这样通过以点带线,以线带面。你会对H.264

的内容认识越来越多。而你也就找到了自己的方向,最终走上了缔造中国人的H.264的光辉大道,呵呵~~~


==========【注意事项】==========

1、切忌将代码和标准文档独立开看,否则,你的困难会很大(当然可能是因为我太笨了,对于“甜菜”的你可能无论怎样都能应用自如。呵呵

~~~)。
2、对于刚开始接触H.264的人,切忌直接看代码和标准,哪怕是将标准和代码结合起来看,你也会不太顺利。换句话说:在没有了解H.264整体

框架之前,你最好什么都不要做。
3、你千万不要觉得自己参加讨论,以及帮助别人找答案(当然是在你觉得别人问的问题你似曾相识的时候)是一个浪费时间的过程。因为你参

加讨论,特别是你帮别人找答案的时候,很多你似是而非的问题却能够得到一个更深刻的认识。
4、学问,学问,即要问也要学。不要养成自己的依赖思想。其实你在自己查资料的过程中,也会学到很多东西。比如会知道某个问题在哪篇文

章里能找到答案,或者收集到更多相关问题的有价值的文章……而且自己查到的到底比别人告诉的印象深刻。


        好了,好像写完了。还没有写的时候觉得自己有很多感受想告诉大家。现在写到这里却好像觉得没说完,但又不知道该说什么了。呵

呵~~~

        那些走在我前面的朋友,你们有什么要对我说的么?我好想听!
        最后还要感谢很多网上的朋友在我学习过程中对我的支持,谢谢你们!!!


转载:http://www.360doc.com/content/061017/19/11177_232935.html

 


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版本好像是最新的,对于翻译标准,我认为不是太必要,但对

了解标准也还是有点帮助,可以放在正常工作时间以外进行,如果大家有这么努力的话。

转载:http://www.360doc.com/content/061017/19/11177_232938.html

 

 

注释:没有得到上面作者的《H264必备资料》,找到下面的一系列资料作为补充吧。

 

网上查找的H264资料:

 

JVT所有的会议文件都在这里
ftp://standards.polycom.com

ITU的站点
http://ftp3.itu.ch/av-arch/

流媒体论坛的FTP
ftp://ftp.wonew.org/
用户名:liumeiti.upload
密  码:liumeiti.upload

清华的FTP
ftp://166.111.66.184
用户名:video
密  码:smth

所有JM的测试模型
http://iphome.hhi.de/suehring/tml/

中国人的H.264--AVS
http://www.avs.org.cn/

视频序列下载网址 
http://trace.eas.asu.edu/
http://ise.stanford.edu/video.html
http://www-mobile.ecs.soton.ac.uk/peter/links/work.html
http://eeweb.poly.edu/~yao/VideobookSampleData/doc/sample/sample.htm
http://www.tkn.tu-berlin.de/research/evalvid/
http://www.cipr.rpi.edu/resource/sequences/  (有D1尺寸)
http://kbs.cs.tu-berlin.de/~stewe/vceg/sequences.htm
http://standard.pictel.com/ftp/video-site/sequences
http://www.i3s.unice.fr/~garciav/goodies.php

H.264论坛
http://bbs.lmtw.com/index.asp?boardid=108
http://bbs.edw.com.cn/index.asp?boardid=47
http://www.newsmth.net/

H.264个人站点
http://lspbeyond.go1.icpcn.com/
http://spaces.msn.com/members/naiqa/
http://blog.chinaunix.net/index.php?blogId=2553
http://h263.blogchina.com/
http://blog.csdn.net/sunshine1314/category/123075.aspx

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素材实例

 


转载:http://www.aimlab.cn/article/TongXinTuXiangYaSuoJiShu/


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之 ROI Pooling

什么是ROI? ROI是 Region of interest 的简写,指的是 Faster R-CNN 结构中,经过 RPN 层后,产生的 proposal 对应的 box 框。 ROI Pooling 顾名思义,是 pooling 层的一种,而且是针对 ROIs 的 pooling。整个…

KD树小结

很久之前我就想过怎么快速在二维平面上查找一个区域的信息,思考许久无果,只能想到几种优秀一点的暴力。 KD树就是干上面那件事的。 别的不多说,赶紧把自己的理解写下来,免得凉了。 KD树的组成 以维护k维空间(x,y,……)内的KD树为例…

多元函数求极值中的a_多元函数的条件极值和拉格朗日乘数法

、条件极值、拉格朗日乘数法1. 转化为无条件极值在讨论多元函数极值问题时,如果遇到除了在定义域中寻求驻点(可能的极值点)外,对自变量再无别的限制条件,我们称这类问题为函数的无条件极值。如求的极值,就是无条件极值问题。然而在…

深度学习之 RPN(RegionProposal Network)- 区域候选网络

anchor boxes基本概念与作用: feature map 上的一个点可以映射回输入图片上的一个点,以特征图上这个点为中心,预先人为设定 k 个 boxes,这些 boxes 就称为在这个点上生成的 k 个 anchor boxes(所有anchor boxes的中心点坐标是一样…

h264的码率控制 JVT-G012

开始看h264的码率控制,很多地方都提到 G012,拿来做为参考比较,看来很有必要研究清楚。 偶这人,E文文档不翻译的话,看过就忘了,于是草草翻译了下,因为不打算做B帧,也不准备在同一帧中…

Android RecyclerView嵌套EditView实时更新Item数据

一、场景(例如:购物车) 1、当我们需要以列表样式管理某些数据时,可能需要列表项的某个字段可编辑 2、编辑Item上的某个字段后可能还要更新相关字段的值 二、可能遇到的问题 1、列表滑动导致输入框中的数据错位(或者焦点…

workbench拓扑优化教程_优化技术在水泵水力设计的应用(上篇)

文章来源:安世亚太官方订阅号(搜索:Peraglobal)CFD技术在泵的内流数值模拟、研究泵内部流动规律和结构方面已广泛应用,取得了很多成果。但是初步设计的产品如果通过CFD仿真得到的性能曲线不能满足使用要求,…

深度学习之 TensorRT

1 简介 TensorRT是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxne…

H.264笔记

H.264标准写得比较繁复,所以考虑在浏览完Whitepaper之后就开始研读X264代码。X264代码风格还是比较清晰简洁的。根据对标准得理解,Picture Order Count在Slice解码的一开始就被提及:I0 B1 B2 P3 B4 B5 P6I0 P3 B1 B2 P6 B4 B5于是I0的POC是0&…

进制转换中dbho是什么意思_什么是网段?二进制十进制如何互相转换?看完这篇,你就全明白了...

之前的文章讲了ip,子网掩码,网关的关系,今天着重讲一下网段。我们用傻瓜交换机通讯时,一个网段的设备才能互相通讯,怎么能判断两个ip是同一个网段呢?今天就简单的说一下。(这篇文章用语音听可以起到催眠作用…

【网络流24题】星际转移问题(最大流)

【网络流24题】星际转移问题(最大流) 题面 Cogs 题解 因为天数是未知的,所以我们要想办法处理天数 可以选择二分或者依次累加天数 因为数据范围较小,使用二分可能反而复杂度会增高 所以使用不断累加天数 那么,把所有的…

使用 gunicorn 部署flask项目

1、WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求。Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的。 2、WSGI容器 常用的WSGI容器有Gunicorn和uWSGI,但G…

软件需求与问题解决

(一) 小满当上项目经理后不久,参与了一个大项目。当时市场签下来的时候,公司里面是欢天喜地的。项目做了一年多。到了交付的时候,用户却很不满意,当初说好的东西,好多都变了卦。用户是上帝&…

flex 换主轴后子元素占满_Chrome72 嵌套 flex 布局修改,你的网站可能会发生布局错乱...

起源2019 年 1 月 29 日,Chrome72 正式版(72.0.3626.81)发布,本次发布带来了一个改变,且没有在更新日志中提及,该改变导致某些网站发生了布局错乱。该改变主要针对的是嵌套的flex布局,下面我们一起看下是怎么回事。问题…

使用 Django + Wusgi + Nginx 部署 Django

如何在生产上部署Django? Django的部署可以有很多方式,采用 nginxuwsgi 的方式是其中比较常见的一种方式。 uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。 WSGI / …

网络学习网址

网络之路博客 http://ccieh3c.com/ 转载于:https://www.cnblogs.com/changha0/p/8179801.html

路由到另外一个页面_Nextjs使用解读一(项目搭建与路由系统)

文章说明:1. 之前想搭建个人博客,由于学习的是react技术栈,所以就到处搜罗资料学了nextjs,配合koa就把博客搭起来了。该系列文章基于我的学习笔记,重新整理了一遍,如果有错误之处,还请指正。2. …

微信获取token -1000

最终翻看微信开发api找到需要去配置IP白名单。只需要配置访问来源IP即可。 转载于:https://www.cnblogs.com/yangjinqiang/p/8184663.html

产品技术和管理

为啥纯粹为消费者传递体验的活动可以价格不菲,几为暴利?——谈客户体验作为客户价值提升之源 不论产品还是服务,如果能够为消费者传递有益的体验,其价值就可以在一般的产品服务之上得以体现;附加了体验的产品&#xff…

Linux 修改系统编码

linux服务器的字符集设置可能影响到网站页面出现 “???” 等问号乱码,还有可能导致文件中的汉字部分出现乱码。有两个原因 服务器没有安装 zh_CN.UTF-8 字符集,导致不支持中文!服务器虽然装了 zh_CN.UTF-8…