学习路线
1、必备基础知识
1.1、开发语言
推荐使用C/C++,因为有很多底层的库是使用C/C++去编写的,当然,也可以使用go语言。
1.2、网络编程基础知识
这个对于每一个从事后端开发的程序员是必须要去学会的。至少要知道i/o多路复用(select、poll和epoll),还有一些同步事件处理模式(reactor和proactor)。要知道TCP/UDP,HTTP这些协议是什么。
1.3、音频基础知识
采样率,声道,音频帧,pcm,音频编码格式:aac,g711,opus,mp3等。音频的封装格式:mp3,wav,wma,midi,aac,cda,mov等。对于这些,要知道概念。
1.4、视频基础知识
了解像素,图片,图片格式,rgb,yuv,视频编码格式:h264,h265等,视频封装格式:mp4,mov,3gp,mkv,avi,flv,ps,ts等。同样也需要知道一些概念。
2、音视频开发方向的专属网络编程
2.1、AI+安防
主要用到的网络协议:gb28181,sip,rtsp,rtp,rtcp;部分功能需要用到的网络协议:rtmp,http-flv,hls。
2.2、直播+点播
主要用到:rtmp,http-flv,hls,cdn2,部分功能需要用到:WebRTC。
2.3、WebRTC
信令服务器;NAT 网络地址转换协议;STUN/TURN中继服务器;P2P通信。
3、推荐学习路线(基础入门)
3.1、ffmpeg
首先可以学一学ffmpeg命令行相关的知识,这样有利于从表面上了解一些音视频相关的的技术点。
3.2、网络编程的基础知识
这一步基本上对于科班出身的同学来说都学过,参考1.2,学到至少要能基于socket写一个最简单的TcpServer和TcpClient。并能够发送和接收字节流数据。
3.3、RTSP
无论是选择上述三个音视频开发方向的任意一个,都需要从基础原理开始学习,推荐从RTSP协议开始流媒体开发的学习,因为RTSP协议是所有流媒体协议中最具有代表性的。而且在学习RTSP的过程中,也可以再一步一步的补充1.3音频和1.4视频的基础知识。
3.4、小项目
RTSP协议学完后,再学习一个基于socket多路复用技术,开发一个简单的RTSP流媒体服务器和RTMP直播服务器的相关项目。这个时候基本上完全就搞懂了流媒体服务器是怎么一回事,之后无论是学习AI安防方向,还是直播方向,都会比较容易选择且目标清晰了,再找一找开源的项目看一看学一学。
3.5、提升学习
学一学WebRTC,不过这玩意学的浅的话很难找工作。
4、给自己的忠告
不管干什么都会很难,希望我自己能够坚持下去,能够小有所成。如果您能够看到我的这篇文章,期待您的建议,也希望能为以后的同学留下一些有参考价值的东西。不要相信任何培训机构!!!他们都是一群骗子。