h264学习(改一)

2017-02-14  本文已影响152人  0_0啊

h264是视频裸流数据,它的结构是经过精心设计的,显得精悍、复杂,初次接触会感觉有些棘手。当然我们先得搜集有关资料。。。

网上的资料很多,不过都是一些博客,描述的只是数量不多的知识点,大多都是重复的,难以形成对h264结构相对完整的认识,甚至可能被误导。我们可以选择一些相对权威的书籍,至少大多数有关h264的问题在这些书里面都能找得到答案,也不容易出错,晚上大多数博客其实也是抄这些书的。这里向大家推荐一本比较好的书--《毕厚杰 新一代视频压缩编码标准H.264》
,网上都是可以下到的。

找到资料后就要花时间去消化了,我不建议直接去读那些资料,一是这些资料比较枯燥难懂,一时间很难理解,囫囵吞枣的去读基本没有效果,转眼就忘,顶多留下一点印象,浪费时间。另一个则会严重打击学习积极性的,有勇气的可以去尝试。。。

自己尝试去解码一段h264裸流是比较有效果的,动手的过程会逐渐地知道哪些是重点,接下来我着重说下自己解码遇到的一些问题,希望对大家有帮助。

解h264有两个问题是比较棘手的,一是h264使用了哥伦布编码,需要大家使用相应的解码方式,还有就是解码操作的最小单元是位,而我使用的语言最方便操作的单元是字节,这就带来了一些麻烦。

我们解码主要是0阶有(无)符号哥伦布解码、二进制位解码十进制等等。哥伦布解码的方法网上有很多,可以很快查到,所以这里不再复述。知道了解码的方法后,就要有一种方法可以连续解码数据,我因此而实现了一个工具类,用于完成各种格式的连续解码工作,内部保存了粒度为位的指针,通过对字节进行位操作来实现,由于指针是内部维护的,外界不需要关心,因不用再担心一些位的操作,显得比较简洁,如此就解决了解码粒度为位的问题,又能连读读取解码数据,剩下的就是根据码流结构依次解码数据了,这也是了解整个h264结构的过程。

为验证自己的解码过程是否正确,我们需要一些软件的帮助。雷神分析h264的工具就不错,我用的也是这个工具,大家可以试试。

万事开头难,我一直坚信功夫不负有心人。。。希望我的分享对大家有所帮助。

http://download.csdn.net/detail/u012129163/9753364 (这是我解码h264所做的一些工作,包含测试文件、工程代码、雷神的分析工具,以及一些文档)

上一篇下一篇

猜你喜欢

热点阅读