webrtc音频模块介绍(一) 音频引擎的架构

音频引擎的架构图

  • ADM位于最下层,直接于各种系统的音频设备打交道。
  • 音频引擎的音频处理模块包括: 音频编解码,Mixer(混音),AudioProcess(3A算法)。

音频引擎的数据流转图

音频引擎全局只有一个,由所有的call对象所共享(一个pc对象对应一个call对象),各个call中的stream都会放在引擎的AudioState对象中。

  • 蓝色箭头 是播放时音频流的流程,AudioDeviceBufferAudioTransportMixer中取混音后的数据,Mixer从各AudioReceiveStream取数据混音。 音频数据最终会通过ADM的回放接口播放。
  • 红色箭头是采集音频的流程。
  • 采集的音频只有一个,采集的音频会向多个端发送数据。
  • 接收的音频有多个,多个音频会经过混音变成一个。

音频引擎中的核心对象

  • AudioDeviceModule就是ADM,与系统中的音频设备打交道。
  • AudioProcessing 音频处理算法(3A算法)。
  • AudioMixer音频混音。
  • AudioState是一个对象管理及音频数据流转。它管理其它三个对象,并且管理所有的call对象中AudioStream
  • 音频编解码对象,AudioEncoderFactoryAudioDecoderFactory
相关推荐
武子康10 小时前
AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书
人工智能·爬虫·gpt·算法·机器学习·ai·音视频
gomogomono17 小时前
【面试】音视频面试
音视频
Likeadust17 小时前
视频汇聚平台EasyCVR“明厨亮灶”方案筑牢旅游景区餐饮安全品质防线
网络·人工智能·音视频
半兽先生1 天前
uniapp微信小程序视频实时流+pc端预览方案
微信小程序·uni-app·音视频
Digitally1 天前
如何轻松将视频从安卓设备传输到电脑?
android·电脑·音视频
技术小丁1 天前
使用 HTML +JavaScript 从零构建视频帧提取器
javascript·html·音视频
梧桐樹下1 天前
FFmpeg avformat_open_input函数分析
ffmpeg
道剑剑非道1 天前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
开发语言·qt·ffmpeg
IOsetting1 天前
Ubuntu24.04 交叉编译 aarch64 ffmpeg
ffmpeg
却道天凉_好个秋1 天前
ffmpeg(三):处理原始数据命令
ffmpeg