webrtc音频模块(五) AudioState和AudioDeviceBuffer

AudioStateAudioDeviceBuffer是音频处理模块的两个功能类。两者没有直接的关系,只是放在这里一起总结。

AudioState

它是WebRtVoiceEngine的大管家,如下图所示类的关系:

如下类图:

它的作用:

  1. 外面访问Engine中AudioDeviceModuleAudioProcessingAudioMixer都是通过AudioState接口。
  2. 各个Call中的Stream对象会被映射到AudioState对象中,进而更新AudioTransportImpl的状态。

AudioDeviceBuffer

它有两个作用:

  1. AudioDeviceBuffer是ADM和Audio Core API间的数据缓存区。

ADM播放和采集的数据,总会通过 AudioDeviceBuffer 拿进来或者送出去 10 ms 的音频数据。对于不支持采集和播放 10 ms 音频数据的平台,在平台的AudioDeviceModule 和 AudioDeviceBuffer 还会插入一个 FineAudioBuffer(比如IOS),用于将平台的音频数据格式转换为 10 ms 的 WebRTC 能处理的音频帧。

  1. 记录音频设备的工作情况,每10s打印一次,记录的值有播放的sample数,最大音量等信息,可用于检测当前硬件的工作状态。

037:814152844 (audio_device_buffer.cc:440): PLAY: 10000msec, 48kHz callbacks: 1000, samples: 480000, rate: 48000, rate diff: 0%, level: 705

047:815152844 (audio_device_buffer.cc:440): PLAY: 10001msec, 48kHz callbacks: 1001, samples: 480480, rate: 48043, rate diff: 0%, level: 1076

如下类图,

音频引擎数据流转

从下面这个图中可以看到AudioStateAudioDeviceBuffer的角色。



相关推荐
换个昵称都难7 分钟前
WebRtcVideoChannel (新版webrtc)
webrtc
南山有乔木78930 分钟前
如何把视频转换成音频mp3格式?7种适合录屏、课程和素材整理的方法
音视频
胖祥35 分钟前
Windows D3D12 DDI中的视频函数调用
音视频
sweetone44 分钟前
小拆小修2例 (劲浪FOCAL耳机, ABRAZO 耦合器温控器)
经验分享·音视频
办公自动化软件定制化开发python1 小时前
开源!Edge TTS 音频转换工具 v2.1:批量文本转语音,支持段落拆分与多发音人
前端·edge·音视频
2601_9578848410 小时前
面向内容合规性的短视频矩阵分发机制:感知哈希去重与语义检索优化实践
矩阵·音视频·哈希算法
luoqice17 小时前
Windows下局域网rtsp流媒体服务器搭建-测试
服务器·windows·音视频
PersistJiao18 小时前
视频下载工具 yt-dlp
音视频
Fisher3Star1 天前
带宽分配策略解析:保音频弃视频
webrtc
七牛云行业应用1 天前
Grok Imagine Video 1.5 实战指南:图生视频 API 完整接入与参数调优
音视频