5G时代很火的音视频高级开发学习路线及知识点总结

我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE。
着重研究两个开源项目 ffmpeg 和 webRTC,主要看ffmpeg的视频部分和webRTC的音频部分。
首先,从视频解码入手,这个最简单,调用 ffmpeg视频解码的基本代码只有100行左右,视频解码只要搞懂h.264就好了,80%+场景都是这个编码格式了,了解基本的 H.264 的 sps pps NAL等文件格式概念,了解YUV图像格式原理,了解YUV到RGB的转换,这样就可以做图像渲染,可以实现一个简单的视频播放器。 (第一阶段基本符合)
然后,学习视频编码,建议从x264入手,一个简单的调用x264的编码代码也不到100行。编码比解码复杂在于,解码是不需要配置什么参数的,而编码有大量参数需要配置,初期只要了解几个基本概念就好了,比如 帧速率, 常用流控方式 ABR CRF,GOP,I/B/P Frame分别是什么意思。(再次熟悉X264编码)
音频部分的编解码和视频差不多,初期只需要了解两种编码器EAAC+和Silk,了解 声道,采样率等概念,了解 Wave文件格式。可以做一个简单音频播放器。(做一个音频播放器)
音频复杂的地方不是编解码,而是音效,看下 webRTC里的 Audio Processing module,理解以下几个概念,去噪NS,消回声AEC,静音检测VAD,自动增益控制AGC,webRTC内置的这几个算法虽然不是最好的,但是可以解决90%+的问题了,值得学习下。(学习webrtc音频处理)
学到了这里需要思考个问题了,自己是想走工程路线还是算法路线,如果是算法路线,那么必须要去学数学了,数字信号处理背后是大量的数学基础理论。如果是工程路线,那么要去学习跨平台开发,学习多个平台下音视频的采集,播放和处理,学习多平台下汇编语言优化。(平台相关)
音视频是个水很深的领域,学一辈子都学不完,但这个领域有个好处,就是知识更新速度比较慢,学的东西不容易被淘汰,经验的积累非常重要。

下面来看看音视频开发的学习路线:

1.首先需要学习的是音视频基础知识

有些朋友对音视频学习有些误区,以为需要很多的理论基础才开始去实践,实际上大家只需要懂:

视频:

  • YUV格式
  • RGB格式
  • 帧率
  • 分辨率
  • H264 I P B帧原理

音频:

  • PCM
  • 采样率
  • 采样格式
  • 码率

等这些基础知识即可开启音视频学习的大门。

2.FFmpeg命令实战

很多朋友也对FFmpeg的学习有误区,一上来就撸各种ffmpeg api,其实不然,我们可以先从FFmpeg命令行入手,我们提供了一个《Windows FFmpeg命令行搭建》的文档。从FFmpeg命令行入手可以让我们更明白FFmpeg开源项目能够做什么。

FFmpeg视频学习资料+1035101242(VX同号)免费获取、备注FFmpeg资料。音视频高级开发qun:正在跳转

3.FFmpeg项目实战

使用FFmpeg可以做一个播放器和录屏器

4.流媒体实战

流媒体实战建议大家学习的顺序 RTMP->HLS->HTTP-FLV,有时间可以再学RTSP,为什么说有时间再学RTSP,是因为互联网行业用RTSP的极少。

5.WebRTC中级开发

6.WebRTC高级开发

7.WebRTC SFU服务器开发

上面这些需要学习的内容大多是音视频开发者们必会的技能,如果您觉得音视频自学难,没有学习的方向,大家可以对照上方的路线进行学习。

最后

在这里我也给大家分享一下音视频开发的学习资料及学习路线图,大家如果需要的话,可以点击正在跳转进群获取

猜你喜欢

转载自blog.csdn.net/Linuxhus/article/details/112705431