前言:
大家假期好,之前有几个粉丝朋友加了我微信私底下说,能不能写一篇有关音视频学习的路线;
这几天我也思前想后,我该怎样写一篇关于音视频的学习路线,音视频学习资料再网上本来就少,而且系统的资料更少,就像上次我说的书籍推荐,我至今在知乎和csdn上,也没找到合适的书籍,找的书籍大都大同小异。
同时也提前说一下,我本人目前不是专门做音视频相关的岗位开发,但是由于业余时间对这块非常感兴趣,也在公众号上写了一些学习总结,期间不断有朋友过来相互交流,非常感谢他们,让我开阔了视野,更加对音视频这块有了一个清晰的认识!
下面我写这篇文章的时候,我会结合一些实际企业招聘的要求来结合写,其实最近一段时间,我也抽时间去面试了一些流媒体岗位(这里说一下,嵌入式端和互联网的音视频差别不是很大,很多音视频知识互通的!),给大家提示一下,网络基础知识非常重要,里面会设计到很多网络协议!(下面是和一位粉丝朋友交流的最多的对话,他做的是一个奥运会项目,压力特别大,进度特别赶,不容易!)
一、看看实际音视频招聘要求:
我们可以打开Boss直聘软件来看一些音视频的企业招聘要求:
这几个招聘要求应该是比较有代表性的,有大厂的也有小厂的;通过上面要求,我们可以发现以下几点是我们在平时学习过程必须要去认真学习的:
- ffmpeg
- h264、h265
- rtsp(这里面更多的是rtp和rtcp)、rtmp
- 常见的封装格式(ts、flv、mp4等)
- 音频、视频,关于它的解码和编码
- webrtc,这个更多的是在流媒体这块更偏向互联网方向,当然现在很多嵌入式岗位也会要求这个。
这里也外加一点硬性的基本要求:c/c 、数据结构、网络基础知识,这里不乏要学习go(当然这块偏向互联网,对于嵌入式岗位的朋友,可以不用去学习,但是c和c 这最基本的要求)
不知道大家看完这些,内心是什么感受哈,如果你是一个对音视频这块安全是刚接触的话,可以从基本的一些基础知识开始,比如说,大部分书籍上写的基础知识点:
- 帧率、分辨率、刷新率
- 编码格式和封装格式
- 码率和画质
- DTS和PTS
- 时间戳
当你对上面的一些概念有了一个大概的了解后,就可以去学习一下ffmpeg的使用,比如说它的常用命令使用,刚开始学习,我建议你到它的官网学习哈(当然在这之前,你要搭建一个ffmpeg环境,不然光看,不动手,肯定是学不会的,这里建议可以不用去看书,直接看手册一定可以学会的):
代码语言:javascript复制https://www.ffmpeg.org/ffmpeg.html
然后接着你可以学会使用ffmpeg常用接口,刚学这个ffmpeg,建议不要去研究它的源码(这个东西比较耗时间,等你有了一定知识量或者基础更扎实了,你再来研究里面的原理也不迟,现阶段你要的就是使用起来,可以做一些简单的东西出来,比如播放器等等),关于ffmpeg开源项目,可以在学习ffmpeg的时候,可以参考雷霄骅前辈的学习总结:
代码语言:javascript复制https://blog.csdn.net/leixiaohua1020?spm=1001.2014.3001.5509
接着往下,你可以去学习rtsp、rtmp相关协议,学习这些协议的时候,更多的是动手写代码实践,因为关于协议的文档里面的知识点很多,你不可能一下记住,只有使用起来,才能理解和掌握的更深。
最后,我个人建议,你可以学习一下开源的流媒体服务器srs:
代码语言:javascript复制https://github.com/ossrs/srs
一些该支持的都支持了:
二、个人看法:
这里的学习路线,我没有去展开具体知识去分享,我觉得把大体的方向给大家列出来就行,具体的细节知识点,你在学习这些大方向的时候,自然而然的就会遇到!其实音视频资料我这里有很多,有需要的朋友可以微信私下找我拿:
同时我这里也有视频教程,也可以私底下找我拿。
总体来说,上面的分享都是对音视频入门最为基本的要求了,其实里面更多的是要实践!
最后希望以上的分享对大家有帮助!
三、总结:
大家在学习完这些,可能会问,有没有开源项目啊,想练练手,当然是有的,暂时你先把基础的知识学习完吧