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

相关推荐
非凡ghost1 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
Ai工具分享1 小时前
视频画质差怎么办?AI优化视频清晰度技术原理与实战应用
人工智能·音视频
AI码上来3 小时前
当小智 AI 遇上数字人,我用 WebRTC 打造实时音视频应用
人工智能·webrtc·实时音视频
萌虎不虎5 小时前
【鸿蒙(openHarmony)自定义音频播放器的开发使用说明】
华为·音视频·harmonyos
知来者逆6 小时前
视觉语言模型应用开发——Qwen 2.5 VL模型视频理解与定位能力深度解析及实践指南
人工智能·语言模型·自然语言处理·音视频·视觉语言模型·qwen 2.5 vl
max5006006 小时前
图像处理:实现多图点重叠效果
开发语言·图像处理·人工智能·python·深度学习·音视频
Antonio9157 小时前
【音视频】WebRTC 音视频延时、同步分析以及超低延时优化
音视频·webrtc
9527华安7 小时前
Xilinx系列FPGA实现DP1.4视频收发,支持4K60帧分辨率,提供2套工程源码和技术支持
fpga开发·音视频·dp1.4·4k60帧
蓝纹绿茶8 小时前
Python程序使用了Ffmpeg,结束程序后,文件夹中仍然生成音频、视频文件
python·ubuntu·ffmpeg·音视频