webrtc音频模块介绍(二) ADM

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

设备管理模块(ADM)

类结构图

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

AudioDeviceWindowCore和AudiDeviceMac就分属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基本架构图及它主要功能的介绍。

相关推荐
Dovis(誓平步青云)8 分钟前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
开开心心就好5 小时前
把手机变成电脑麦克风,WiFi连接就能用
智能手机·ffmpeg·计算机外设·电脑·word·音视频
Dovis(誓平步青云)6 小时前
现场问题先关闭还是先验收,建筑任务怎样处理依赖
前端·javascript·数据库·mysql·音视频
原子延迟6 小时前
视频还没出画面怎么判断是不是坏了
图像处理·人工智能·计算机视觉·音视频
小猴子爱上树7 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,跨境电商翻译工具
python·音视频
Evanfu02168 小时前
整部短剧文件怎么管理:目录、命名与版本规则
aigc·音视频·视频·机器翻译·自动翻译
weixin_421607558 小时前
带货视频怎么翻译成外语?翻译配音工具与成片服务商对比
音视频·视频本地化·vividdub·视频翻译配音工具·多语种视频翻译·电商视频配音·中文口播转英文
阿明副业观察8 小时前
AI视频生成设备选型指南:平板 vs 电脑,怎么选更高效?
大数据·人工智能·ai作画·aigc·电脑·音视频·ai写作
音视频牛哥8 小时前
人工智能推进下,铁路行业音视频需求正在发生哪些变化?
音视频·多模态ai·smartmediakit·铁路音视频技术方案·铁路人工智能·铁路视频监控·铁路ai
Anhty9 小时前
自媒体剪音频选哪个?3 款音频剪辑工具实测分享
人工智能·功能测试·音视频·媒体