课程名称:音视频基础+ffmpeg原理 入门音视频技术开发
课程章节:音频基础知识
课程讲师:李超
课程内容
对于一个娱乐直播系统来说,直播客户端可以分为共享端和观看端。
- 在共享端主要完成两个工作:音视频采集和音视频编码;
- 在观看端也要完成两个工作:音视频的解码和音视频的渲染。
1.音视频采集
音频采集一般我们只需要简单调用一下api就能实现,每个操作系统都提供了相对于的api, 只是对于不同的平台各不相同。如Android端有audioRecord, mediaRecord等,我们什么时候使用audioRecord,什么时候使用MediaRecord,这个我们需要非常清楚它的应用场景。同样在IOS 端有苹果提供的AVFoundation框架提供了很多音视频采集的方法,其中有很常用的底层方法AudioUnit。
2.音视频编码
我们采集到音视频之后并不能直接传输,因为这个数据太大了,超出了我们网路的设备的负载。如果我们直接传输这么大量的数据,很容易出现各种问题,因此我们必须对这些数据进行压缩后再进行传输,这个压缩的过程就是对音视频的编码处理。编码后的数据就是非常小的数据了。编码分为有损编码和无损编码。
3.音视频传输
编码时候,我们就需要把数据传输到对端,这个传输的过程也是非常复杂的。
4.音视频的解码
对端收到传输的数据后,需要对编码的数据进行解码,把压缩的数据还原后才能进行播放渲染。解码这块是跟编码相对应的,用什么方式编码,就需要用对应的方式解码。
5.音视频渲染
解码后的音视频通过调用相关的 API,完成对硬件设备的驱动,最终完成音视频的播放。
6.音频数据流转
完整的音频数据流从采集到最终的渲染,大致要经历以下几个步骤:
- pcm(完整的数字信号)
- aac/mp3 (压缩后的数据)
- mp4/flv/mov(套一层马甲作为可识别的多媒体文件)
- 解码器解封(aac/mp3)
- 还原pcm去播放