[MPEG-4/H.264视频编解码工程实践]PART 1 笔记

最近在读 《MPEG-4/H.264视频编解码工程实践》, 本身是视频行业从业人员,同时也是开发人员,所以对音视频流媒体这块很感兴趣,最近一直在搞ffmpeg编程(C/iOS端)。

[MPEG-4/H.264视频编解码工程实践]第一章总结

我们目前看到的音视频,基本都是有损编码(不可逆)的,但是凭借我们肉眼几乎很难察觉出来这种残差;视频是由于一帧一帧的信息组合而成,而为了尽可能的压缩视频,某些帧之间是有预测和依赖的关系,前后两帧变化较小的地方是光滑并且连续的,而差别较大的地方是作为帧间运动的重点计算对象区域。
很有趣的是,人体肉眼对亮度比色度更加感兴趣,这一切都是驱动编码和解码发展的方向。


目前编码算法标准还是以ISO和ITU两大组织制定的,但是他们只是制定了算法标准,并没有给出具体的实现工程,所以才会有各种我们现在所用的编解码基础算法工程。


视频解码实则是编码的逆向过程,只不过多了熵解码(对于h263等的熵编码基本是用霍夫曼编码 ,详见我另外一篇文章:https://www.jianshu.com/p/8b7410e242c6);
具体解码过程主要是:熵解码 | 反量化 | 反变换 | 运动补偿算法 | 最终处理
包括编码操作,里面涉及到 搜索匹配(三部搜索 etc.. 钻石搜索目前最佳)、运动估计、 变换(新维度去分配时域和空域的能量,便于压缩,主要针对图像残差)、量化、熵编码(持续压缩分配符号信息)


MPEG-4最早第一代压缩编码算法,主要以宏块的方式预测,如果压缩比较高,则会导致出现严重的块效应

这种情况我之前在做视频图像处理的时候,对图像进行二值化过程中,阈值以块为单位进行计算,在较小尺寸图片或某些变化度交大的交界处会出现严重的块效应
所以之后的开进有了一个非常有趣的现象! 才用类似于图像分割:前景后景分割方式去处理,这种想法很超前诶~ 在当年硬件设备普遍不是非常给力情况下(机器学习无法大力施展)依然得到了不错的效果;不过只能说不错,不能说非常成熟。


MPEG-4才用I-VOP/P-VOP/B-VOP (VOP是VO在某一时刻的表现,主要为时域在空域的展现)三中对象来表示不同帧类型,我们在H264中常见的。


解码相关。
h264的NAL网络抽象层,主要为网络传输所进行的一层封装,类似于我们常用的直播等服务,可以根据自己不同需求去定制。而视频流媒体仅仅是VCL层(这些详细说来就太多了,具体在数书里和资料有体现,先记在这里,开发过程中也会用到)。
解码的过程和编码很类似,也会涉及到帧内预测,帧间预测等操作。


业内目前做安防等行业,对于硬件内是常有一块编解码芯片,常用ASIC做基础,但是缺点是不可以升级改动,烧录的程序不会重新修改(相比其他可编程芯片会廉价一些)。


总结

这一章还是对于音视频的基础算法和背景会有一些了解,但是具体的内容还是要看往后的内容来补充。

你可能感兴趣的:([MPEG-4/H.264视频编解码工程实践]PART 1 笔记)