因为博主一直从事的是专业音响、乐器等音频领域行业,后面博主准备转行专心做音视频开发,后面会记录一系列学习过程。
音视频整体开发流程按照功能划分分为:采集、预处理、编码、封装、传输、解封装、解码、渲染等很多环节
网上学习资料很多,但是都不太完整系统化,后面的学习方式会按照这个流程走,一边学习每个模块的功能然后一边做项目将所有模块功能串联起来。
将这些功能做一个简单的介绍:
1、采集:数据的收集
音频采集:直接获取已有音频、利用音频处理软件捕获截取声音、用麦克风录制声音。(模拟信号转换为数字信号)
视频采集:直接获取已有视频、利用视频处理软件捕获截取视频、用摄像头拍摄视频。(光信号转电信号、电信号转模拟信号)
2、预处理:
音频:增益、回声消除、降噪等
视频:滤镜、美颜、加字幕、绿幕抠图等
3、编码
音频:将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。
名称 | 推出机构 | 推出时间 | 目前使用领域 |
AAC | MPEG | 1997 | 各个领域(新) |
AC-3 | Dolby Inc. | 1992 | 电影 |
MP3 | MPEG | 1993 | 各个领域(旧) |
WMA | Microsoft Inc. | 1999 | 微软平台 |
视频:视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。
名称 | 推出机构 | 推出时间 | 目前使用领域 |
HEVC(H.265) | MPEG/ITU-T | 2013 | 研发中 |
H.264 | MPEG/ITU-T | 2003 | 各个领域 |
MPEG4 | MPEG | 2001 | 不温不火 |
MPEG2 | MPEG | 1994 | 数字电视 |
VP9 | | 2013 | 研发中 |
VP8 | | 2008 | 不普及 |
VC-1 | Microsoft Inc. | 2006 | 微软平台 |
4、封装
将视频码流和音频码流按照一定的格式存储在一个文件中。
AVI、MP4、TS、FLV等
5、传输
流媒体传输协议
6、解封装
解封装是上面介绍的封装的逆操作,从音视频的容器中将音频包、视频包分离出来放到各自的队列,等待各自的解码线程去解码渲染视频,播放音频。
7、解码
编码的逆操作,将视频包解码成原始的视频帧,将音频包解码成原始的pcm音频数据。
8、渲染
视频的渲染 windows 平台下可以使用 Direct3D 技术渲染视频,macOS,Android 和 Linux 可以使用 OpenGL 、OpenGLES 技术渲染视频。
PS:大致就是这样了,我后面会一个模块一个模块的去啃,任务艰巨,有很多编译器是自带了api解决其中某些功能的,音视频一般是需要跨平台,Windows、MAC、Linux、android、IOS等,如果要学好最后还是要去做跨平台SDK,刚开始学可以只在某个系统上把流程走通,多做几个项目就打通了