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基本架构图及它主要功能的介绍。

相关推荐
xingqing87y6 分钟前
索尼拍摄的视频怎么调亮度
音视频
嘻哈baby11 分钟前
WebRTC实时通信原理与P2P连接实战
网络协议·webrtc·p2p
好游科技13 分钟前
使用WebRTC开发直播系统与音视频语聊房实践指南
音视频·webrtc·im即时通讯·社交软件·私有化部署im即时通讯·社交app
AI营销快线15 小时前
车企AI营销内容生产:2025图文与视频生成实战指南
人工智能·音视频
EasyCVR16 小时前
视频汇聚平台EasyCVR助力农场实现全场景可视化管理
大数据·人工智能·音视频
好游科技16 小时前
语音语聊系统开发深度解析:WebRTC与AI降噪技术如何重塑
人工智能·webrtc·交友·im即时通讯·社交软件·社交语音视频软件
福大大架构师每日一题16 小时前
pion/webrtc v4.1.7 版本更新详解
webrtc
漫长的~以后17 小时前
Qwen2.5-Omni横空出世:四模态统一模型如何破解音视频同步难题?
音视频
Likeadust17 小时前
视频推流平台EasyDSS无人机推流直播技术在国土测绘中的创新应用
音视频·无人机
小咖自动剪辑18 小时前
提升电商素材剪辑效率:多场景内容自动生成流程解析
人工智能·实时互动·音视频·语音识别·视频编解码