webrtc音频模块介绍(二) ADM

不同操作系统管理音频设备及提供的音频接口方式各不同,ADM用于屏蔽音频设备管理及接口的差异,抽象统一接口。它的全称是Adio Device Module。

设备管理模块(ADM)

类结构图

首先它肯定是个接口类,不同平台的实现都继承于它,实现具体的接口。如下为整个ADM体系的类结构图。

AudioDeviceWindowCoreAudiDeviceMac就分属windows和mac下的实现,linux下的实现为AudioDeviceLinuxALSA

ADM的接口分为三大类:

  1. 音频设备管理:检索音频设备,初始化音频设备,指定使用的音频设备。
  2. 音频回放。
  3. 音频采集。

在整个音频模块中,它属于最底层,将上层的处理后的音频数据给到音频设备进行回放或采集音频给到上层处理。

创建时机

全局只有一个ADM对象,由所有的pc(peerconnection)对象所共享。

相关堆栈

创建ADM的具体代码可以看看webrtc_voice_engine.cc文件中的void WebRtcVoiceEngine::Init()方法。

windows下的实现

windows下的实现具有代表性,也方便调试。后面回放,采集的流程都以windows下的实现来分析。

对应的实现类是AudioDeviceWindowCore,类图如下:

作为windows下的具体实现,它直接管理Windows提供的音频COM对象。

以I开头的都是属于windows下的音频设备相关的接口。

  • IMMDevice代表一个音频设备。
  • IMMDeviceCollection音频设备集。
  • IMMDeviceEnumerator用于枚举音频设备。
  • IMMEndpoint代表一个音频终端设备。

以上为ADM基本架构图及它主要功能的介绍。

相关推荐
AI服务老曹4 小时前
Docker部署AI视频分析平台参数配置说明与调优指南
人工智能·docker·音视频
weixin_446260854 小时前
SportMV-Agent:面向多机位体育视频的智能体多视角推理框架 & SportMV-Bench评测基准
人工智能·计算机视觉·音视频
明哥聊AI8 小时前
AI音乐生成技术全景:Suno V4与Udio背后的音频扩散模型深度解析(2026最新)
人工智能·音视频
禹亮科技10 小时前
上海张江100㎡数据中心指挥中心音视频系统集成方案(思科+思必驰+利亚德 多平台会议适配)
音视频·视频会议系统集成·上海禹亮科技·思科视频会议终端·指挥中心系统搭建
小猴子爱上树12 小时前
Temu批量视频翻译Python实现方案
开发语言·python·音视频
AI服务老曹13 小时前
Docker部署AI视频分析平台项目实战记录
人工智能·docker·音视频
2501_9139817813 小时前
AI与边缘计算助力视频监控与智能预警安防物联网方案
人工智能·音视频·边缘计算·智能安防监控
大师兄66681 天前
HarmonyOS7 音视频播放:AVPlayer 实战
音视频·avplayer·harmonyos7
REDcker1 天前
libdatachannel 快速入门
c++·webrtc·datachannel
做萤石二次开发的哈哈1 天前
萤石开放平台如何拉取 RTC 房间成员列表?
音视频·萤石开放平台