原文:bbs.chinavideo.org/viewthread.php?tid=988
注:此文为对原文的摘抄
现在自己对学习H.264也有了一些自己的想法,所以写出来和大家一起探讨:
1、第一个阶段:
学习H.264,首先要把最基本最必要的资料拿在手里,内容包括:标准文档(即 ITU 协议)、测试模型(即 ITU 提供的编解码器源代码)、经典文章(即后面提到的文章)。怎么使用这些资料呢?首先看里面的《H.264_MPEG-4 Part 10 White Paper》,看完之后再看《Video coding using the H.264 MPEG-4 AVC compression standard》和《H.264 And MPEG-4 Video Compression》,然后可以抽空看《Overview
of the H.264_AVC Video Coding Standard.pdf》。前三篇文章看完后,你应该对H.264的整体框架有个比较深入的了解了。这个时间可能只需要花费你三周左右的时间(对于我这样的笨蛋好像是要这么长时间的。如果你碰巧用了比这个时间还长的时间,那并不说明你比我更笨,只能说明你肯定天天陪MM聊天去了。呵呵~~~),最后一篇文章是《Overview and Introduction to the Fidelity Range Extensions》,该文的价值主要在于对H.264的第四个档次
high profile 做了介绍,前面的文章都没有涉及该档次。这个阶段可以辅助多看点综述类的文章,加强对 H.264 的初步了解。
2、第二阶段:
然后你就可以看代码了。这个时候你最常用的工具就是标准文档和测试模型。看代码也有讲究。并不是像我开始那样看得那么仔细,结果后来才知道远没有这个必要。正如peter李说的:看代码也要先从整体框架入手。先搞懂H.264的整体框架在代码里是怎么分布的,一个功能模块的前伸模块和后继模块是什么。也就是搞清楚整个代码流程。这个阶段对标准文档的使用可能很少。如果你使用的测试模型是JM,那么有一个好处:JVT提供了该参考源代码的说明书——H.264_MPEG-4 AVC Reference Software Manual(最新版本是JVT-X072),对编解码的所有参数做了详细介绍。另外JVT还提供了参考源代码编码器手册JVTO079,对参考源代码中编码算法做了详细阐述(ITU协议其实也就是解码器手册)。
3、第三阶段:
然后你找到一个自己感兴趣的切入点,开始以此为中心研究这个问题。你研究问题的时候应该是联系测试模型来研究,这个时候你就需要仔细看代码中对这个问题的实现了。这个阶段我绝对支持你一行行代码跟踪,一个参数一个参数地跟踪。而代码中不懂的地方可能需要查标准。这时你再来看标准文档就有了针对性。也因为能将标准文档和代码对应起来,从而看标准文档也不觉得有太大困难,也能明白标准文档说的是什么问题,在测试模型中是如何通过代码实现的。在这个阶段中,会牵连到很多H.264的相关知识,这样通过以点带线,以线带面。你会对H.264的内容认识越来越多。而你也就找到了自己的方向,最终走上了缔造中国人的H.264的光辉大道,呵呵~~~
==========【注意事项】==========
1、切忌将代码和标准文档独立开看,否则,你的困难会很大(当然可能是因为我太笨了,对于“甜菜”的你可能无论怎样都能应用自如。呵呵~~~)。
2、对于刚开始接触H.264的人,切忌直接看代码和标准,哪怕是将标准和代码结合起来看,你也会不太顺利。换句话说:在没有了解H.264整体框架之前,你最好什么都不要做。
3、你千万不要觉得自己参加讨论,以及帮助别人找答案(当然是在你觉得别人问的问题你似曾相识的时候)是一个浪费时间的过程。因为你参加讨论,特别是你帮别人找答案的时候,很多你似是而非的问题却能够得到一个更深刻的认识。
4、学问,学问,即要问也要学。不要养成自己的依赖思想。其实你在自己查资料的过程中,也会学到很多东西。比如会知道某个问题在哪篇文章里能找到答案,或者收集到更多相关问题的有价值的文章……而且自己查到的到底比别人告诉的印象深刻。
5、读代码要讲究方法。代码中有很多变量,不要一开始就去看头文件,想把里面所有变量都弄清楚是什么。直接从 main 函数开始读 c 文件就可以了。遇到不懂的变量再去查头文件,如果头文件里没有说明,自己又理解不了的再去问其他人——不要一开始就养成依赖性。
6、使用 JM 的 TX 如果不需要研究高清,那么建议用 JM86。高版本为了支持高清,把很多原本容易理解的地方修改得晦涩难懂了,增加了理解代码的困难。
PS :我所知道的三本讲H264的中文书籍
1、《H.264和MPEG-4视频压缩》:欧阳合(我看的英文原版,翻译过来的应该也不错)
2、《新一代视频压缩编码标准—H.264/AVC》:毕厚杰(书中有较多错误,但仍然值得买,建议只做参考)
3、《小波编码与网络视频传输》:沈兰荪,卓力 (个人觉得不错,有关于 high profile 的介绍)
分享到:
相关推荐
我的H.264学习历程,写的还可以,有需要的可以下载看看,谢谢。
于是视频新标准H.264由IEO/IEC和ITU-T两大国际标准化组织联手制定了,来解决这些问题。 H.261是最早出现的视频编码建议,目的是规范ISDN网上的会议电视和可视电话应用中的视频编码技术。它采用的算法结合
附件为H264的中英文资料,包含<毕厚杰-新一代视频编码标准H264>, <H.264官方中文版>,<H264_White paper>,H264学习历程等。
人工智能的发展历程 人工智能与虚拟现实技术在教育领域中的研究成果和应用情况 人工智能也称机器智能,它是计算机科学、控制论、信息论、神经生理学、心理学、 语言学等多种学科互相渗透而发展起来的一门综合性学科...
北斗定位ATGM336H-5N模块软硬件开发资料包括硬件参考设计原理图+STM32 C51 Arduino例程源码,可做为你的学习设计参考。
基于ARM微控制器STM32F101xx与STM32F103xx学习历程
记录学习算法历程 1. leetcode/ 中的一些算法题解:Contest.h , Function.h. 2. PtOffer/ 剑指Offer:名企面试官精讲典型编程题 3. TypicalClasses/ /complex : 复数类 /Fraction : 分数类 /String : 字符串类 /...
调试: r: 运行 R:重新运行 p:显示网格 大写P:显示性能 o:切换模拟器 s:保存截图 h:显示帮助信息 q:退出. 3.切换版本: flutter channels && flutter channels XXX 之后 flutter upgrade即可 git checkout xxx . 打开...
电机控制原理,ti矢量控制算法原理,控制实例算法以及历程代码,适合28335学习这学习电机控制
金山云H.265在视频直播场景下的应用演进 阿里窄带高清,打造新优酷极致体验 腾讯IEGVR视频直播探索与创新 Go in TiDB 搜狗智能语音之路 滴滴智能交互 美好出行 人工智能助力新时代K12教育 阿里智能实验室语音识别...
MySQL 5.1参考手册 ... 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 This translation was done by MySQL partner GreatLinux, Beijing, People's Republic of China....
在本⽂,我将带领⼤家领略⼀下⼈⼯智能在历史上的发展历程,从宏观上对⼈⼯智能有⼀个⼤体的认识,跟上时代发展的步伐。 ⼈⼯智能的提出 ⼈⼯智能是在1956年作为⼀门新兴学科的名称正式提出的,⾃此之后,尽管有⼀...
“可教机器”是一项实验,使任何人都可以更轻松地探索实时在浏览器中的机器学习,无需编码。 了解有关该实验的更多信息,并在上尝试一下。 该实验是使用库构建的。 我们还发布了该项目的样板版本,可以用作您自己...
别 率 1 9 8 8 年 , 世 界 上 首 个 非 特 定 人 大 词 汇 量 连 续 语 音 识 别 系 统 S P H I N X 诞 生 技术萌芽阶段 1997年,语音听写产品问世。次年, 可识别上海话、广东话和四川话等 地方口音的语音识别系统...
包括顶尖学者的全球与中国分布、迁徙概况、h-index分析,并依据AMiner评价体系,在世界层面选择瞩目的六位学者与中国两个层面上的五位出色学者进行详细介绍。 4.人脸识别技术应用领域 我们首先对国内人脸识别的三大...
从学习,但使用 。 演示 演示站点(iisnode): 安装 $ npm uninstall -g babel # completely remove babel@5 $ npm install -g nodemon webpack babel-cli node-inspector $ npm install 编辑./config/sequelize...
初始化程序将建立 BIOS 所支持的中断向量,即将 BIOS 提供的中断历程的入口地址登记在中断向量表中。 硬件系统检测和初始化完成后,调用 INT 19H 进行操作系统的引导。 如果设为从软盘启动操作系统,则 INT 19H 将...
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发展历程在开发模式下。 启动样板
C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件...
18_复数类_所有函数都写在类的外部(h和cpp分开) 19_类模板中的static关键字 20_案例_数组模板类_需求和类的初步设计 21_案例_数组模板类_测试框架搭建 22_案例_数组模板类_类的实现和测试_传智扫地僧 23_案例_数组...