视音频基础知识——视音频解码——视音频编码——视音频转码——视音频播放——具体应用——其他高阶内容
其实就对应于你在通信原理里学过的基本通信模型,下面以流媒体传输系统为例画个对应项示意图,基本上除了中间信道的部分,都是编解码生涯中要研究的东西。
下面我针对学习路线中的各部分单独做一下介绍
视音频基础知识:
- 视频、图像、音频的格式。这里的“格式”是一个广义的概念,既包括MP4,FLV这样的封装格式,也包括H264,MPEG2这样的编码格式,还包括420 422 444这样的取样格式,甚至RGB,HSV,YUV这样的彩色空间也可以算作一种格式,将来在应用时还可能会遇到RTMP,HLS这样的流媒体传输协议或者其他的协议,都可以算作格式。这些纷繁复杂的格式就好比学英语时要背的单词,初学的时候可能觉得看不见摸不着,将来落实到代码上却是一目了然的,但是这个“背单词”的过程一定不能省。在一些论坛里经常能看到很多写代码的高手受困于不懂这些基本的概念,大概就是基础没打好。
- 信息论以及压缩编码入门。在你学习前面的各种格式时不可避免地会涉及到一些压缩编码的知识,随便拿一本讲视频编码的书,前面的绪论也都会简单讲讲信息论知识。简单来说,你需要知道视音频为什么要压缩编码,为什么可以实现压缩编码,怎样评价压缩编码的质量,以及具体编码过程中的一些概念,比如型(profile)和级(level),GOP,IPB帧,NAL单元,宏块,运动矢量、量化参数,帧内编码(当然你首先要知道帧率、场频这类的概念),帧间预测,这一大堆的概念,在不同的编码标准中还会有各种专属的概念。觉得前途黑暗想要放弃吗?不要怕,下面我会给你推荐一些参考书,看上一两本就差不多入门了。
如果说前面的各种格式相当于英语中的单词的话,这部分很显然就是语法了。
其他。相信你已经感觉到了,视音频基础知识确实是非常杂的,除了前面提到的“单词”和“语法”之外,还会有“视音频质量评价”这样的概念,我也不知道要怎么归类,差不多可以算是应用吧。说到视音频技术的应用,流媒体应用是很大的一块,那么这其中又涉及到很多的计算机网络知识。再比如高阶应用中的“硬件加速”,就又涉及到更多高端内容了。这些东西在你以后的工作中慢慢积累就好,还是那句话,不要怕。
扯蛋。闲着没事的时候玩玩单反、摄像机、非编软件,学校或者自己有条件的话去参观一下电视台,关注一下索尼佳能尼康松下等厂家的产品彩页及说明书,实践对于加深理解基础知识非常有用。
视音频编码、解码、转码:
在你学过前面的基础知识后,是时候上手实践了。编解转码方面有很多开源工程在业内外都得到了广泛的应用,最著名的是ffmpeg。你的编解码生涯有一半可能都要耗在ffmpeg身上了,这个项目是如此庞大,如此牛逼,我都不知道该怎么介绍了,而且你在学习这个项目的过程中也可以接触到包括x264在内的一大票其他开源项目。