`
weiyinchao88
  • 浏览: 1176008 次
文章分类
社区版块
存档分类
最新评论

H264学习方法&&历程&&资料

 
阅读更多
我的H.264学习历程

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

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

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

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

——当时并不知道这几百兆的东西到底怎么用,现在倒是知道它的用处了,看来还是没有白下,呵呵~~~。

一开始就想,先看看标准吧。因为标准是英文的,又特别长。所以为了避免看了后面忘记了前面,我就开始翻译,看一段翻译一段。可

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

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

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

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

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

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

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

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

)。

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

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

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

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

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

里的经常讨论,让我真正开始了学习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/


分享到:
评论

相关推荐

    H264学习资料(中英文)

    附件为H264的中英文资料,包含<毕厚杰-新一代视频编码标准H264>, <H.264官方中文版>,<H264_White paper>,H264学习历程等。

    我的H.264学习历程.doc

    我的H.264学习历程,写的还可以,有需要的可以下载看看,谢谢。

    嵌入式系统/ARM技术中的H.264视频编码基本知识

    于是视频新标准H.264由IEO/IEC和ITU-T两大国际标准化组织联手制定了,来解决这些问题。  H.261是最早出现的视频编码建议,目的是规范ISDN网上的会议电视和可视电话应用中的视频编码技术。它采用的算法结合

    人工智能的发展历程.doc

    人工智能的发展历程 人工智能与虚拟现实技术在教育领域中的研究成果和应用情况 人工智能也称机器智能,它是计算机科学、控制论、信息论、神经生理学、心理学、 语言学等多种学科互相渗透而发展起来的一门综合性学科...

    Flutter_learn_demo:Flutter_learn_demo Flutter学习历程

    调试: r: 运行 R:重新运行 p:显示网格 大写P:显示性能 o:切换模拟器 s:保存截图 h:显示帮助信息 q:退出. 3.切换版本: flutter channels && flutter channels XXX 之后 flutter upgrade即可 git checkout xxx . 打开...

    TEST_RVMDK.rar_stm32f10x_systick.h

    基于ARM微控制器STM32F101xx与STM32F103xx学习历程

    TI28335电机控制_28335_电机原理_motor_电机控制_矢量控制_源码

    电机控制原理,ti矢量控制算法原理,控制实例算法以及历程代码,适合28335学习这学习电机控制

    可教学机器v1:在浏览器中探索机器学习的工作原理。 无需编码

    “可教机器”是一项实验,使任何人都可以更轻松地探索实时在浏览器中的机器学习,无需编码。 了解有关该实验的更多信息,并在上尝试一下。 该实验是使用库构建的。 我们还发布了该项目的样板版本,可以用作您自己...

    leetcode分类-AlgorithmLearning:算法学习

    记录学习算法历程 1. leetcode/ 中的一些算法题解:Contest.h , Function.h. 2. PtOffer/ 剑指Offer:名企面试官精讲典型编程题 3. TypicalClasses/ /complex : 复数类 /Fraction : 分数类 /String : 字符串类 /...

    AMiner:2018人脸识别研究报告(2018年10月版)

    其次,研究介绍了目前人脸识别的主要方法,包括基于特征脸的方法、基于几何特征的方法、基于深度学习的方法、基于支持向量机的方法和其他综合方法;第三,我们介绍了人脸识别的三大经典算法,分别为特征脸法、局部二...

    从程序员到CTO大牛企业内部PDF与PPT合集.zip

    金山云H.265在视频直播场景下的应用演进 阿里窄带高清,打造新优酷极致体验 腾讯IEGVR视频直播探索与创新 Go in TiDB 搜狗智能语音之路 滴滴智能交互 美好出行 人工智能助力新时代K12教育 阿里智能实验室语音识别...

    react-isomorphic-bundle:React Redux通用(同构)捆绑

    从学习,但使用 。 演示 演示站点(iisnode): 安装 $ npm uninstall -g babel # completely remove babel@5 $ npm install -g nodemon webpack babel-cli node-inspector $ npm install 编辑./config/sequelize...

    asp.net知识库

    C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件...

    王爽《汇编语言》第二版课程设计2,我的答案

    初始化程序将建立 BIOS 所支持的中断向量,即将 BIOS 提供的中断历程的入口地址登记在中断向量表中。 硬件系统检测和初始化完成后,调用 INT 19H 进行操作系统的引导。 如果设为从软盘启动操作系统,则 INT 19H 将...

    智能语音市场研究报告.pptx

    别 率 1 9 8 8 年 , 世 界 上 首 个 非 特 定 人 大 词 汇 量 连 续 语 音 识 别 系 统 S P H I N X 诞 生 技术萌芽阶段 1997年,语音听写产品问世。次年, 可识别上海话、广东话和四川话等 地方口音的语音识别系统...

    react-redux-webpack-starter:学习React

    React-babel-webpack-es6入门项目使用React,... $ git clone https://github.com/chenbin92/react-redux-webpack-starter.git app-name$ cd app-name$ npm install //or cnpm install发展历程在开发模式下。 启动样板

    人工智能的发展历史概览.pdf

    在本⽂,我将带领⼤家领略⼀下⼈⼯智能在历史上的发展历程,从宏观上对⼈⼯智能有⼀个⼤体的认识,跟上时代发展的步伐。 ⼈⼯智能的提出 ⼈⼯智能是在1956年作为⼀门新兴学科的名称正式提出的,⾃此之后,尽管有⼀...

    传智播客扫地僧视频讲义源码

    07_程序设计方法发展历程 08_C语言和C++语言的关系_工作经验分享 09_namespace和iotream 10_实用性加强_register增强_检测增强 11_struct关键字类型增强 12_c++类型类型检查加强 13_新增数据类型bool类型 14_中午...

    厨房智能监控系统(下位机源码+APP+设计分析)-电路方案

    如果仅仅是学习测试使用,甚至可以直接用官方给的IOE Dome测试,因为这个Dome里没有都设备的product key进行筛选,所以凡是接入到机智云的Gokit开发板在局域网里都能被这个Dome APP找到并连接。 这里给一个智能厨房...

    MySQL5.1参考手册官方简体中文版

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

Global site tag (gtag.js) - Google Analytics