音频引擎的架构图
- ADM位于最下层,直接于各种系统的音频设备打交道。
- 音频引擎的音频处理模块包括: 音频编解码,Mixer(混音),AudioProcess(3A算法)。
音频引擎的数据流转图
音频引擎全局只有一个,由所有的call对象所共享(一个pc对象对应一个call对象),各个call中的stream都会放在引擎的AudioState
对象中。
- 蓝色箭头 是播放时音频流的流程,
AudioDeviceBuffer
从AudioTransport
中Mixer
中取混音后的数据,Mixer
从各AudioReceiveStream
取数据混音。 音频数据最终会通过ADM的回放接口播放。 - 红色箭头是采集音频的流程。
- 采集的音频只有一个,采集的音频会向多个端发送数据。
- 接收的音频有多个,多个音频会经过混音变成一个。
音频引擎中的核心对象
AudioDeviceModule
就是ADM,与系统中的音频设备打交道。AudioProcessing
音频处理算法(3A算法)。AudioMixer
音频混音。AudioState
是一个对象管理及音频数据流转。它管理其它三个对象,并且管理所有的call对象中AudioStream
。- 音频编解码对象,
AudioEncoderFactory
和AudioDecoderFactory
。