随着5G时代的全面到来,音视频已经成为我们日常生活和工作中不可或缺的一部分。从短视频平台的火爆,到在线教育的兴起,再到远程会议、直播、拍摄剪辑等领域的广泛应用,音视频的应用场景越来越丰富,需求也随之急剧增加。
然而,尽管市场需求如此旺盛,但合格的音视频开发人才却供不应求。这一现状无疑为那些对音视频开发充满热情、渴望在这一领域大展拳脚的人才们提供了前所未有的机遇。
今天,我们就来分享《2024音视频技术发展报告》的精华内容,一起探讨音视频开发的就业前景。
一、音视频就业人员现状
1. 技术人员基本画像
音视频行业从业者主要集中在技术岗位,其画像呈现出如下特点:
-
性别与年龄:男性占比显著,年龄分布集中于31~40岁,这反映出行业对中生代技术人员的依赖。
-
地理分布:人才多集中在一线城市如北京、上海、广州,主要得益于这些地区优越的产业环境和技术资源。
-
教育背景:本科及以上学历占绝大多数,表明行业对高素质人才的需求强烈。
-
从业经验:超六成从业者具备5年以上工作经验,其中尤以5~9年经验者为主,显示出行业对专业积累的重视。
-
开发工具使用情况:
-
编程语言:C++和C语言为主流,具备高性能计算能力和硬件贴近性的特点。
-
技术工具:FFmpeg作为音视频领域的首选框架,因其强大的多媒体处理功能而备受欢迎。
2. 公司规模与职位分布
-
公司规模:从业人员多数集中于千人以上的大型企业,行业龙头效应明显。
-
职位分布:高级工程师为主力,此外还包括技术负责人及高管等关键角色,体现出行业对技术领导力的需求。
二、就业与招聘现状
1. 就业稳定性
-
整体就业市场稳定,大部分技术人员在过去24个月内不存在无固定收入现象,但存在个别人员工作变动情况。
2. 薪酬水平
-
大多数技术者薪水达到30万以上,甚至担任公司重要职位者可达百万以上。
3. 招聘趋势
-
知识复杂性高,对人才综合能力要求增加。
-
AI与音视频技术双领域人才稀缺。
三、音视频行业产业链分析
1. 产业链分析
音视频行业的生态体系主要分为三部分:
- 上游:基础资源提供商
包括软硬件提供商、音视频编解码和流媒体技术提供商、云计算服务提供商以及网络传输服务提供商。这些企业为音视频行业提供必要的支持和基础设施。
- 中游:音视频解决方案提供商
涵盖SaaS(软件即服务)和PaaS(平台即服务),提供音视频技术的软件平台、应用服务以及平台和工具,帮助开发者快速构建和扩展音视频应用。
- 下游:应用场景
音视频技术的应用场景非常广泛,包括社交娱乐、在线教育、金融、医疗、政企服务、在线零售和企业办公等。
2. 产业链头部企业图示
四、音视频项目
现在市场上音视频工资并不低,但是还是有大量缺口。因为音视频开发涉及的知识体系比较复杂,学习成本高,互联网上关于音视频开发的资料较少,且很多资料存在错误信息,这使得初学者在学习过程中容易遇到困难,导致很多人难以坚持学习。尤其对于缺乏项目经验的校招生来说,短期内靠自己独立学习完成一个音视频项目难度是相当之大。
这里给大家推荐几个音视频项目,项目来自B站程序员老廖(大家可以自行搜索,也可以点击下面的视频地址观看),项目都有视频讲解,还有详细的文档说明和源码。
B站最强QT音视频播放器分享-附24页详细文档需要这个QT播放器详细文档、c++一站式学习网站的同学可以找老廖获取, 视频播放量 3369、弹幕量 22、点赞数 136、投硬币枚数 196、收藏人数 165、转发人数 5, 视频作者 程序员老廖, 作者简介 分享C/C++领域的资料和就业信息,包括嵌入式/音视频/QT/C++后台开发等内容。,相关视频:C++项目推荐,QT项目推荐-仿微信聊天,QT客户端+Linux C++后端,C++学到什么程度可以就业-全新C/C++学习网站分享,带C++面试题,完美适配手机端,《C++Linux编程进阶:从0实现muduo C++网络框架系列》-第1讲.CMake构建大型项目,C++要怎么学才能实现最强C++云存储项目(可写简历)-支持注册-登录-分享文件-预览视频和图片,音视频开发-可以写到简历的C++QT音视频项目qt+ffmpeg播放器源码分享和简要讲解,C++Linux项目推荐-Web多人聊天+MySQL+Redis+Websocket+Json,可以写简历的C++项目,C++春招校招简历必写项目-仿写Redis之Qedis,深入掌握C++Linux必备的Redis技术栈,C++QT项目推荐,QT学习必备的上位机技能(图表/TCP/SQL)-配套详细文档,C++2025就业方向求助,对应C++方向需要掌握哪些技术栈才能找到工作,现在AI发展迅猛的情况下,应届生选择Java还是C++?
https://www.bilibili.com/video/BV1geAZe2Ek3/C++音视频项目推荐(可写简历)-RTMP流媒体服务器-附保姆级音视频学习路线需要RTMP流媒体服务器项目文档资料、源码、以及音视频学习路线的同学找老廖获取。, 视频播放量 1272、弹幕量 8、点赞数 29、投硬币枚数 24、收藏人数 66、转发人数 0, 视频作者 程序员老廖, 作者简介 分享C/C++领域的资料和就业信息,包括嵌入式/音视频/QT/C++后台开发等内容。,相关视频:C++Linux项目推荐-Web多人聊天+MySQL+Redis+Websocket+Json,可以写简历的C++项目,音视频开发-可以写到简历的C++QT音视频项目qt+ffmpeg播放器源码分享和简要讲解,C++项目-简历上别再写webserver了,不如仿写C++ netty-附带300页reactor网络模型文档,别盯着C++线程池了,来看看C++高性能多线程任务队列系统的实现,可以写进简历的项目,C++春招校招简历必写项目-仿写Redis之Qedis,深入掌握C++Linux必备的Redis技术栈,C++进阶,要不要看《STL源码剖析》-其实看C++STL八股文面试题就足够了,C++2025就业方向求助,对应C++方向需要掌握哪些技术栈才能找到工作,音视频开发没有项目?手撸流媒体服务器(可写简历)既能掌握Linux编程又能增加音视频项目,【C++项目实战】从零手撸一个媒体播放器!代码逐行讲解,小白也能搞定!,音视频并不难学,保姆级别音视频就业路线详解,进来看看适不适合你
https://www.bilibili.com/video/BV1dccdeCEpM/音视频开发没有项目?手撸流媒体服务器(可写简历)既能掌握Linux编程又能增加音视频项目很多音视频岗位都需要Linux编程,但很多同学不知道怎样才算掌握Linux编程。老廖建议大家可以自己实现一个流媒体服务器(可以参考老廖提供的源码实现),既能加深对Linux编程的理解,比如线程池、reactor模型、http、webserver等,也能加深对流媒体协议、流媒体服务器的理解,并且可以写到简历里。, 视频播放量 3122、弹幕量 10、点赞数 120、投硬币枚数 124、收藏人数 143、转发人数 7, 视频作者 程序员老廖, 作者简介 分享C/C++领域的资料和就业信息,包括嵌入式/音视频/QT/C++后台开发等内容。,相关视频:校招、社招C++学到什么程度可以找到工作,C++一站式就业知识库帮你解惑,C++Linux项目推荐-Web多人聊天+MySQL+Redis+Websocket+Json,可以写简历的C++项目,音视频面试题分享(综合快手、阿里、腾讯、声网等公司的总结),C/C++二本、双非一本、211/985计算机就业和薪资情况分析,以及如何做就业规划,C++春招校招简历必写项目-仿写Redis之Qedis,深入掌握C++Linux必备的Redis技术栈,对于想转行音视频开发的朋友几点建议,热心学员音视频面试题(音视频细分行业top级公司)完整分享,音视频开发-可以写到简历的C++QT音视频项目qt+ffmpeg播放器源码分享和简要讲解,腾讯2024年实习招聘5000+人意味着什么,怎么准备C++实习?是不是大三、研二才需要关注实习?,2024年,在校生C++就业还有没有一席之地,不同学历、学校就业方向是否有区别,社招哪些C++就业方向薪资更高
https://www.bilibili.com/video/BV1v64y1K7s5/?vd_source=c059eb5a3b0ff5a8b664287bf79885e4音视频开发完整学习路线
1.音视频基础
1.1音频基础知识
-
01.如何采集声音-模数转换原理
-
02.为什么高品质音频采样率>=44.1Khz
-
03.什么是PCM
-
04.一个采样点用多少位表示
-
05.采样值用整数还是浮点数表示
-
06.音量大小和采样值大关系
-
07.多少个采样点作为一帧数据
-
08.左右通道的采样数据如何排列
-
09.什么是PCM(脉冲编码调制)
-
10.音频编码原理
1.2 视频基础知识
-
01.RGB彩色原理
-
02.为什么需要YUV格式
-
03.什么是像素
-
04.分辨率、帧率、码率
-
05.YUV数据存储格式区别
-
06.YUV内存对齐问题
-
07.为什么画面显示绿屏
-
08.H264编码原理
-
09.H264IPB帧的关系
1.3 解复用基础知识
-
01.什么是解复用,比如MP4格式
-
02.为什么需要不同的复用格式MP4/FLV/TS
-
03.常见的复用格式MP4/FLV/TS
1.4 FFmpeg开发环境搭建
-
O1. Windows、Ubuntu、MAC三大平台
-
02.QT安装
-
03.FFmpeg命令行环境
-
04.FFmpeg API环境
-
05. FFmpeg编译
-
06.vs2019安装(win平台)
1.5 音视频开发常用工具
-
01.MediaInfo,分析视频文件
-
02.VLC播放器,播放测试
-
03.EasyICE,分析TS流
-
04. flvAnalyser,分析FLV
-
05.mp4box,分析mp4
-
06.audacity ,分析音频PCM
-
07.Elecard_streamEye,分析H264
-
08.海康YUVPlayer ,分析YUV
2.FFmpeg实战
2.1 FFmpeg命令
-
01.音频PCM/AAC文件提取
-
02.视频YUV/H264文件提取
-
03.解复用、复用
-
04.音视频录制
-
05.视频裁剪和合并
-
06.图片/视频转换
-
07.直播推流和拉流
-
08.水印/画中画/九宫格滤镜
注:掌握FFmpeg命令的目的:
-
1.快速掌握FFmpeg能做什么;
-
2.加深对音视频的理解。
2.2 SDL跨平台多媒体开发库实战
-
01.SDL环境搭建
-
02.SDL事件处理
-
03.SDL线程处理
-
04.视频YUV画面渲染
-
05.音频PCM声音输出
注:SDL美容Win,Ubuntu、Mac三大平台,主要用于后续项目的画面显示和声音输出
2.3 FFmpeg基石精讲
-
01.FFmpeg框架
-
02.FFmpeg内存引用计数模型
-
03.解复用相关AVFormat XXX等
-
04.编解码相关AVCodec XXX等
-
05.压缩数据AVPacket
-
06.未压缩数据AVFrame
-
07.FFmpeg面向对象思想
-
08.Packet/Frame数据零拷贝
注:目的熟悉FFmpeg常用结构体和函数接口
2.4 FFmpeg音视频解复用+解码
-
01.解复用流程
-
02.音频解码流程
-
03.视频解码流程
-
04.FLV封装格式分析
-
05.MP4封装格式分析
-
06.FLV和MP4 seek有什么区别
-
07.为什么FLV格式能用于直播
-
08.为什么MP4不能用于直播
-
09.MP4能否用来做点播
-
10.AAC ADTS分析
-
11.H264 NALU分析
-
12.AVIO内存输入模式
-
13.音频重采样实战
-
14.重采样后的数据播放时长是否一致
-
15.重采样后PTS如何表示
-
16.视频解码后YUV内存对齐问题
-
17.音频解码后PCM排列格式问题
-
18.硬件解码dxva2/nvdec/cuvid/qsv
-
19.硬件gpu数据转移到cpu
-
20.H265解码
注:FFmpeg API学习:视频解复用->解码->编码-> 复用合成视频
2.5 FFmpeg音视频编码+复用合成视频
-
01.AAC音频编码
-
02.H264视频编码
-
03.PCM+YUV复用合成MP4/FLV
-
04.H264编码原理
-
05.IDR帧和I帧区别
-
06.动态修改编码码率
-
07.GOP间隔参考值
-
08.复用合成MP4音视频不同步问题
-
09.编码、复用timebase问题
-
10.MP4合成IOS不能播放问题
-
11.重采样后PTS如何表示
-
12.视频编码YUV内存对齐问题
-
13.硬件编码dxva2/nvenc/cuvid/qsv
-
14.H265编码原理
-
15.H264、H265编码互转
2.6 FFmpeg过滤器
-
01.FFmpeg过滤chain框架
-
02.音频过滤器框架
-
03.视频过滤器框架
-
04.多路音频混音amix
-
05.视频水印watermark
-
06.视频区域裁剪和翻转
-
07.视频添加logo
注:filter在视频剪辑领域应用广泛。
2.7 ffplay播放器(开源项目实战)
-
01.掌握ffplay.c的意义
-
02.ffplay框架分析
-
03.解复用线程
-
04.音频解码线程
-
05.视频解码线程
-
06.声音输出回调
-
07.画面渲染时间间隔
-
08.音频重采样
-
09.画面尺寸格式变换
-
10.音频、视频、外部时钟同步区别
-
11.以视频为基准时音频重采样补偿
-
12.音量静音、调节大小的本质
-
13.音视频packet队列大小限制
-
14.音视频packet队列线程安全
-
15.音视频frame队列大小限制
-
16.音视频frame队列线程安全
-
17.暂停、播放实现机制
-
18.seek播放导致的画面卡住问题
-
19.seek播放数据队列、同步时钟处理
-
20.如何做到逐帧播放
-
21.播放器退出的流程要点
注:ffplay.c是ffplay命令的源码,b站播放器也是基于这个源码二次开发。
2.8 ffmpeg多媒体视频处理工具(开源项目实战)
-
01.掌握ffmpeg.c的意义
-
02.ffmpeg框架分析
-
03.音视频编码
-
04.封装格式转换
-
05.提取音频
-
06.提取视频
-
07.logo叠加
-
08.音视频文件拼接
-
09.filter机制
-
10.命令行解析流程
-
11.MP4转FLV不重新编码逻辑
-
12.MP4转FLV重新编码逻辑
-
13.MP4转FLV timebase
-
14.MP4转FLV scale
注:ffmpeg.c是ffmpeg命令的源码,掌握ffmpeg.c的目的:遇到命令行会但不会写代码时可以debug ffmpeg命令行跟踪学习
2.9 FFmpeg+QT播放器(自研项目实战)
-
01.播放器讲解
-
02.播放器框架分析
-
03.播放器模块划分
-
04.解复用模块
-
05.音视频解码
-
06.播放器控制
-
07.音视频同步
-
08.dxva2硬解
-
09.音量频谱展示
-
10.音频均衡器
-
11.画面旋转、翻转
-
12.画面亮度、饱和度调节
-
13.画面4:3 16:9切换
-
14.码流信息分析
注:该项目难度较大:
-
1.手把手实现大部分功能;
-
2.少部分功能老师提供技术支持。
2.10 OBS二次开发-录制推流项目(自研项目实战)
-
01.OBS vs2019+QT5.15.2编译
-
02.音频配置和初始化分析
-
03.音频线程模块采集和编码分析
-
04.视频配置和初始化分析
-
05.视频线程模块采集和编码分析
-
06.OBS初始化过程分析
-
07.录制流程分析
-
08.麦克风采集分析
-
09.桌面采集分析
-
10.X264编码分析
-
11.系统声音+麦克风混音
-
12.推流模块分析
注:该项目难度较大:
-
1.供深入推流项目的学员参考;
-
2.提供编译视频以及基本应用的视频。
3.流媒体客户端
3.1 RTMP推拉流项目实战(自研项目实战)
-
01.RTMP协议分析
-
02.wireshark抓包分析
-
03.H264 RTMP封装
-
04.AAC RTMP封装
-
05.RTMP拉流实战
-
06.H264 RTMP解析
-
07.AAC RTMP解析
-
08.RTMP推流实战
-
09.没有MetaData能否播放
-
10.RTMP推流是否会导致延迟
-
11.RTMP推流如何动态调整码率
-
12.RTMP推流如何动态调整帧率
-
13.RTMP拉流是否会导致延迟
-
14.如何检测RTMP拉流延迟
-
15.如何解决RTMP播放延迟
-
16.ffplay、vlc能否用来测试播放延迟
-
17.RTMP拉流播放变速策略设置
-
18.音频降噪
-
19.本地保存
注:RTMP推拉流流媒体必学项目。
3.2 HLS拉流分析
-
01.HLS协议分析
-
02.HTTP协议分析
-
03.TS格式分析
-
04.m3u8文件解析
-
05.wireshark抓包分析
-
06.HLS拉流实战
-
07.FFmpeg HLS源码分析
-
08.HLS多码率机制
-
09.如何解决HLS延迟高的问题
注:理解HLS的拉流机制,有助解决HLS播放延迟较高的问题
3.3 RTSP流媒体实战(自研项目实战)
-
01.RTSP协议分析
-
02.RTP协议分析
-
03.H264 RTP封装
-
04.H264 RTP解析
-
05.AAC RTP封装
-
06.AAC RTP解析
-
07.RTCP协议分析
-
08.RTSP流媒体服务器搭建
-
09.RTSP推流实战
-
10.RTSP拉流实战
-
11.wireshark抓包分析
-
12.RTP头部序号的作用
-
13.RTCP的NTP和RTP的TS的区别
-
14.RTSP交互过程
-
15.花屏可能的原因
-
16.SPS PPS如何发送
-
17.SDP封装音视频信息
注:RTSP中的RTCP RTP SDP等协议在WebRTC也有应用。
4.流媒体服务器
4.1 SRS 3.0源码剖析
-
01.整体框架分析
-
02.RTMP推流分析
-
03.RTMP拉流分析
-
04.HLS拉流分析
-
05.HTTP-FLV拉流分析
-
06.FFmpeg转码分析
-
07.首屏秒开技术分析
-
08.forward集群源码分析
-
09.edge集群源码分析
-
10.负载均衡部署方式
-
11.连接和协程的关系
-
11.如何更快速掌握SRS源码
-
12.流媒体服务器是否导致延迟
-
13.如何降低流媒体服务器的延迟
-
14.怎么获取流媒体服务器推流信息
-
15.怎么获取流媒体服务器拉流信息
-
16.首屏秒开能降低延迟吗
-
17.推流->服务器转发->拉流延迟分析
注:对于SRS流媒体服务器,我们长期更新,从3.0->4.0->5.0。
4.2 ZLMediaKit源码剖析
-
01.整体框架分析
-
02.线程模块划分
-
03.RTSP推流连接处理
-
04.RTSP拉流连接处理
-
05.数据转发模型
-
06.SDP解析
-
07.RTP H264解析
-
08.RTP AAC解析
注:ZLMediaKiti讲解RTSP,其他模块RTMP/HLS等参考SRS。
5.WebRTC项目实战
5.1 WebRTC中级一对一音视频通话(自研项目实战)
-
01.WebRTC通话原理分析
-
02.WebRTC开发环境搭建
-
03.cotum最佳搭建方法
-
04.如何采集音视频数据
-
05.一对一通话时序分析
-
06.信令服务器设计
-
07.SDP分析
-
08.Candidate类型分析
-
09.Web一对一通话
-
10.Web和Android通话
-
11.AppRTC快速演示
-
12.如何设置编码器优先级
-
13.如何限制最大码率
-
-14.信令服务器的本质是什么
-
15.为什么从接口获取SDP后还要再次设置
-
16.Web和Android的SDP差异
-
17.A要和B通话,A怎么知道B的存在
注:学习WebRTC建议:
-
1.从web端入手,可以直接调用js接口;
-
2.对WebRTC通话流程有清晰的理解再考虑其他端。
5.2 WebRTC高级-MESH模型多人通话(自研项目实战)
-
01.自定义摄像头分辨率
-
02.码率限制
-
03.调整编码器顺序
-
04.Mesh模型多方通话分析
-
05.多人通话信令服务器开发
-
06.动态分配stun/turn服务器
-
07.Web客户端源码
-
08.Android客户端源码
5.3 WebRTC高级-Janus SFU模型多人通话(自研项目实战)
-
01.Janus框架分析
-
02.Janus信令设计
-
03.基于Janus实现会议系统
-
04.Janus Web客户端源码分析
-
05. Janus Android客户端源码分析
-
06.Janus Windows客户端源码分析
-
07.基于Full ICE的部署
-
08.基于Lite ICE的部署
-
09. Full ICE和Lite ICE的区别
-
10.发布订阅模型
注:Janus是一个非常出名的SFU WebRTC服务器,不少企业基于该开源项目做二次开发,比如学霸君。
5.4 WebRTC高级开发-SRS 4.0/5.0源码分析
-
01.RTMP转发WebRTC逻辑
-
02.WebRTC转发RTMP逻辑
-
03.WebRTC音视频一对一通话
-
04.WebRTC多人通话
-
05.WebRTC SFU模型分析
-
06.SRTP分析
-
07.RTCP分析
-
08.SDP分析
-
09.NACK分析
-
10.stun分析
注:SRS著名的流媒体服务器,社区非常活跃。
6.Android NDK开发
6.1 Android NDK开发基础
-
01.So库适配总结
-
02.GDB调试技巧
-
03.Makefile工程组织
-
04.CMake工程组织
-
05.生成指定CPU平台的so库
-
06.JNI基础和接口生成
-
07.JNI Native层构建 Java对象
-
08.JNI异常处理
6.2 Android FFmpeg编译和应用
-
01.编译x264
-
02.编译x265
-
03.编译mp3
-
04.编译fdk-aac
-
05.编译FFmpeg
-
06.使用ffmpeg实现mp4转格式
-
07.使用FFmpeq开发播放器
6.3 Android RTMP推拉流(自研项目实战)
-
01.RTMP推流协议实现
-
02.RTMP拉流协议实现
-
03.RTMP拉流音视频同步
-
04.MediaCodec硬件编码
-
05.MediaCodec硬件解码
-
06. OpenSL ES播放音频数据
-
08.OpenGL ES Shader显示视频
6.4 Android Ijkplayer源码分析(开源项目实战)
-
01.编译ijkplayer和实践
-
02.项目框架分析
-
03.播放状态转换
-
04.拉流分析
-
05.解码分析
-
06.音频播放流程
-
07.视频渲染流程
-
08.OpenSL ES播放音频数据
-
09.MediaCodec硬件解码
-
10.OpenGL ES Shader显示视频
-
11.变速播放实现原理
-
12.低延迟播放实现
-
13.缓存队列设计机制分析
7.IOS音视频开发
7.1 FFmpeg 6.0 MAC编译
-
01.xcode调试FFmpeg
-
02.QT调试FFmpeg,通用的FFmpeg知识学习在Mac平台
-
03.IOS调用FFmpeg
7.2 IOS FFmpeg RTMP推拉流
-
01.AVFoundation视频采集
-
02.Metal视频渲染
-
03.Audio Unit 音频采集
-
04.Audio Unit 音频播放
-
05.FFmpeg推流
-
0.6 FFmpeg拉流
-
07.直播延迟和解决方法
7.3 Videooolbox硬件编解码
-
01.VideoToolbox框架的流程
-
02.硬件编解码步骤
-
03.CVPixelBuffer解析
-
04.如何获取SPS/PPS信息
-
05.判断是否关键帧
-
06.编码参数优化
7.4 IOS ijkplayer编译和应用
-
01.本地视频播放
-
02.RTMP拉流播放
-
03.HTTP点播
-
04.音频播放流程
-
05.视频渲染流程
7.5 IOS WebRTC音视频通话
-
01.一对一通话
-
02.多人通话