前言
在程序员行业中,音视频开发领域许多人接触后都觉得门槛偏高;不知道如何开始学起,网上资料很少。
看到这个问题作为行业老人,我就来说说音视频有哪些学习路线与难点?
音视频开发
音视频流媒体开发,工作机会占80% 都在跑这个流程: 音视频采集—>编码 —>组包—>tcp/udp网络编程—>推流—>流媒体转发—>客户端拉流—>socket通讯—>解码—>渲染. 用到ffmpeg的,就是最后那很小的,解码那个阶段。iOS上甚至都不用ffmpeg。大部分时候,都在这个流程中,做一个小功能,一做可能就是一年,三年。这个流程,可能是一个很大的研发团队在干的。年投入可能是几千万的。
另外20%的工作机会,在音视频处理。最近几年火起来的,各种AR特效,贴纸,美颜(opencv). 还有新一代视频编辑软件(也是各种特效),都是基于OpenGL shader来做。 这个方面,用到ffmpeg也非常少。 最多是加载下视频,最后保存下视频。
所以音视频开发工程师,简单概括起来, 要么做流媒体开发,要么音视频处理开发。
学习知识清单
如以下知识鸟瞰图解:
鉴于以上知识学习路线,我这里建议以下几点:
这里推荐音视频辅导学习资料:《音视频入门到精通手册》
- 如果对音视频传输感兴趣,就可以学习各种传输协议、各种信令的控制、数据传输安全等。
- 如果对编解码感兴趣,视频可以学习H264、H265、VP8, AV1等,音频可以学习PCM、G72x、ilbc等;
- 如果对特效感兴趣,可以学习图形学的知识,从各种转码、美颜、滤镜、模糊处理、锐化处理等方向入手;
- 如果对服务端感兴趣,可以学习搭建媒体服务器入手、包括音视频数据转发、信令数据处理、拉流、推流协议的处理等。
- 如果对各种音视频格式感兴趣、可以学习音视频数据格式封装、包括MP4、MVK、FLV、TS、RMVB、MP3、ogg等。
- 当然可以深入学习一些开源库,包括FFMPEG、WebRTC、x264、live555等。
总结
- 核心竞争力:
音视频是程序界的皇冠,掌握音视频意味着拿到通往未来的船票,不用担心会被其他人替代。因为音视频是有一定门槛的,所以也是与其他人拉开差距的分水岭。
- 高端人才相当缺乏:
BOOS直聘中,北上广深很多年薪50W-70W的音视频开发岗位,常年招不到人,月薪2-3万大多是刚从事音视频的入门级开发者
- 技术迭代慢:
H264编码从1995年成为标准至今一直都在使用,属于比较偏底层的技术,而底层技术几十年都不会有太大的改变。
如果大家再仅仅是停留在简简单单的四大组件、UI、网络这一块,可替代性是非常高的