Core Audio APIS in Vista/Win7

应用范围:

    支持Vista/win7, 不支持XP

关于Windows Core Audio APIs

    在Windows Vista及Windows 7操作系统下,微软为应用程序提供了一套新的音频组件来改进音频质量。Core Audio APIs提供了这些组件的使用方法,是更高级的APIs的实现基础。例如:DirectSound、DirectMusic、WaveXxx、mixerXxx等API都是在其上构建。它们之间的关系如下图所示:

Core Audio APIs由三大部分组成:MMDevice API、WASAPI、DEVICEToplogyAPI。三者分别侧重不同方面。

  • MMDevice API:用于枚举系统的音频端节点设备。
  • WASAPI(Windows Audio Stream API):用于创建、管理进出音频端节点设备的音频流。
  • DeviceToplogyAPI:直接获取硬件设备的拓扑结构及其功能。

 

音频流的管理

    枚举系统的音频设备并指定回放、录音设备后,下一步工作就是打开设备连接,管理该连接上的数据流。WASAPI可供应用程序创建并管理音频流。应用程序可使用WASAPI实现Rendering a Stream, Capturing a Stream以及Loopback Recording。我们可以利用Loopback Recording类实现系统录音功能,达到"Record what you hear"的目的。

在loopback模式下,WASAPI应用程序可以捕获设备当前正在播放的音频流。操作步骤为:

  • 获取播放设备端口的IMMDevice接口;
  • 获取指定设备上的音频播放格式;
  • 在播放设备端口上初始化loopback模式的音频捕获流;
  • 调用IAudioClient::GetService方法获取IAudioCaptureClient接口;
  • 开启捕获线程,捕获线程循环交替调用IAudioCaptureClient::GetBuffer和IAudioCaptureClient::ReleaseBuffer方法获取音频数据之后写入指定文件。

 

方案缺陷

   按照MSDN所说,loopback模式只能用于shared-mode音频流,而对exclusive-mode音频流无能为力,也就是说遇到exclusive-mode音频流该方案将失效。此外,由于WASAPI仅由Windows Vista及以上系统提供,故XP下无法使用此方案,该方案对系统的依赖性高,可移植性小。

 

参考:

https://www.yuque.com/docs/share/9123277d-2987-4c12-bfdb-189e9c8d44fe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值