视频开发学习路线

    xiaoxiao2021-03-25  183

    作者:张晖 链接:https://www.zhihu.com/question/27005982/answer/34945817 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 谢邀。在你目前列举出来的课程中,都将在你的编解码生涯中派上用场,有的在你入门时就会用到,有的在你进阶时才会用到,比如你哪天研究在硬件上做视音频开发的话就要用到数电模电了。 还有英语。 简单梳理一下学习路线的话,我认为是这样的: 视音频基础知识——视音频解码——视音频编码——视音频转码——视音频播放——具体应用——其他高阶内容 其实就对应于你在通信原理里学过的基本通信模型,下面以流媒体传输系统为例画个对应项示意图,基本上除了中间信道的部分,都是编解码生涯中要研究的东西。 没错,我们主要研究的就是信源。 <img src="https://pic1.zhimg.com/445134fd8f6674f6ac3911fe48c05894_b.jpg" data-rawwidth="6156" data-rawheight="10325" class="origin_image zh-lightbox-thumb" width="6156" data-original="https://pic1.zhimg.com/445134fd8f6674f6ac3911fe48c05894_r.jpg">下面我针对学习路线中的各部分单独做一下介绍

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

    视音频编码、解码、转码: 在你学过前面的基础知识后,是时候上手实践了。编解转码方面有很多开源工程在业内外都得到了广泛的应用,最著名的是ffmpeg。你的编解码生涯有一半可能都要耗在ffmpeg身上了,这个项目是如此庞大,如此牛逼,我都不知道该怎么介绍了,而且你在学习这个项目的过程中也可以接触到包括x264在内的一大票其他开源项目。 希望你能科学上网活用谷歌广泛搜索国内外资料进行学习,相关教程非常多,其中就包括由我们实验室的雷霄骅师哥制作的一系列教程,我会在最后给出他的博客链接供你瞻仰,我已经瞻仰了很久。 为什么这里着重讲开源项目,因为只有做开源项目你才有可能深入调试源码,也就能看到很多原理上的东西,与前面所学的基础知识也就能一一对应上了。

    视音频播放: 播放又是另外一大块内容了,就拿其中最简单的“视音频该如何同步”的问题,就绝对能难倒一大堆业内人士。除此之外,如何给视频加上一些“特效”“滤镜”这样的内容也可以算作是视音频播放方面需要研究的内容。同样也有很多开源闭源项目供我们学习,比如ffdshow,DirectShow,ffmpeg中的avfilter部分等,这一部分我也是新手,等我深入研究后再回来补充这一块。

    具体应用: 就如我前面所说,视音频技术应用的一大块就是流媒体应用。 1、流媒体传输协议:现在业界应用比较广泛的是rtmp和hls。我研究比较多的是rtmp,但其实这个由adobe推出的协议很蛋疼,adobe官方给的文档很模糊,基本上只有librtmp这个开源项目可供应用,还不是和官方文档完全对应的。好吧我说的有点夸张,同学你将来不要放弃研究rtmp。 2、流媒体服务器:流媒体应用作为典型的客户\服务器模式应用,除了要知道怎样在客户端收流、推流之外,有时候还需要研究一下服务器端的技术。FMS,red5,live555,crtmpserver等开源闭源服务器项目都是值得研究的内容。 3、流媒体应用现在很火,但是各家公司在带宽、存储上耗费的成本都很高,如何进行服务优化也是研究热点。

    其他高阶内容: 硬件加速、码率控制、QoE优化、包括HEVC在内的各类最新最奇葩编码方法等,都是你在编解码生涯里需要一直关注的问题。

    https://www.zhihu.com/question/27005982

    转载请注明原文地址: https://ju.6miu.com/read-1389.html

    最新回复(0)