目前流媒体开发工程师工作主要是做什么?
目前音视频方向的岗位主要有4类:
- 生产端
- 消费端
- 流媒体服务端
- 音视频算法
目前主要说的是流媒体工程师需要的技能,所以生产、消费、算法暂时不说。
流媒体服务端
擅长语言C/C++/Golang;
熟悉网络编程、Linux内核网络模块,TCP/IP、UDP;
熟悉P2P技术,如:ICE、TURN、STUN等原理;
熟悉常见的流媒体协议,包括:RTP/RTCP、RTMP、RTSP、RTP-PS、GB28181;
熟悉码流封装转换,包括:ES、PS、TS;
熟悉常见文件封装格式:MP4、FLV、TS;
熟悉编解码格式转换,包括:H.264、H.265、VP8、VP9、Opus、AAC、G.711a;
熟悉WebRTC架构,熟悉Native源码,了解音视频处理流程、码率自适应、JitterBuffer、NetEQ、FEC、ARQ、带宽估计算法、拥塞控制等;
熟悉常见框架,包括:FFmpeg、WebRTC、SRS、ZLMediaKit等;
熟悉开源SFU开源项目,如:Licode、Janus、MediaSoup;
还有部分企业也会要求开发者将生产端与消费端的传输模块也一起做了,这也会要求开发者熟悉Android/IOS等嵌入式设备开发技能:
WebRTC是实时通信,是这几年的主流方向,目前还不是很卷,所以说,主攻这个方向是目前的最优选择,可以做的还有很多,比如服务器支持、IPC支持、APP支持、物联网设备支持等。