Core Audio APIS in Vista/Win7实现

Windows下Core Audio APIS 音频应用开发(二) 对于一个音频应用程序,最基本也是最重要的两个点就是:音频数据的采集;音频数据的播放。下面我们来看下如何用Core Audio APIS进行音频数据的采集。     最权威的学习资料无疑是微软的MSDN官方资料,先给出链接地址,大家可以先去阅读下文档,虽然是英文,但挺好理解的,https://msdn.microsoft.com/en-us/library/dd370800(v=vs.85).as 阅读详情
应用范围:Vista / win7, 不支持XP

1. 关于Windows Core Auido APIs

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

       


      Core Audio APIs由三大部分组成:MMDevice API、WASAPI、DeviceToplogyAPI。三者分别侧重不同方面。
      Mmdevice API:用于枚举系统的音频端节点设备。
      WASAPI(Windows Audio Stream API):用于创建、管理进出音频端节点设备的音频流。
      DeviceToplogyAPI:直接获取硬件设备的拓扑结构及其功能。
      本文主要介绍使用WASAPI对音频流管理的功能实现系统录音功能。
 

2. 音频流的管理

      枚举系统的音频设备并制定回放、录音设备后,下一步工作就是打开设备连接,管理该连接上的数据流。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::ReleaseBuufer方法获取音频数据之后写入指定文件


3. 方案缺陷

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

参考资料:
MSDN相关章节:
msdn.microsoft.com/en-us/library/dd370802(VS.85).aspx

C++实现从麦克风读入音频并保存 C++实现录音,从麦克风读入音频,保存格式为wav 立即下载

相关推荐

core audio 音频捕获

core audio 音频捕获,捕获麦克风声音,和扬声器的声音。

IAudioClient播放音频

//----------------------------------------------------------- // Play an audio stream on the default audio rendering // device. The PlayAudioStream function allocates a shared // buffer big enough to hold one second of PCM audio data. // The function uses.

tong5956的专栏 1738

带回声消除功能的Windows Core Audio(MMDeviceApi)音频采集

采用windows vista之后最新的mm device api,进行基于core audio的音频采集,启用windows内部实现的回声消除, 系统会将正在输出的音频信号,从麦克风采集到的音频里面过滤掉,使其只包含来着计算机外部的声音。比如人的语音。 系统要求vista及以上,xp不可用,xp可移步至directsound全双工采集,启用AEC回声消除效果的参考代码。http://download.youkuaiyun.com/detail/xuwei17385/4060561

音频系统底层API

  Windows Vista、Windows 7、Windows server 2008等系统音频系统相比之前的系统有很大的变化,产生了一套新的底层API即Core Audio APIs。该低层API为高层API( 如Media Foundation(将要取代DirectShow等高层API)等 )提供服务。 微软参考文档 几个概念,参考自 Windows下Core Audio APIS ...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 7255

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

要配置西门子G120XA变频器实现**端子启停**和**Modbus RTU(485)频率给定

如有问题,可通过STARTER软件在线诊断Modbus通讯状态。要配置西门子G120AX变频器实现。

微:13763355074 4847

Windows捕获系统声音

最近在写键盘配套的上位机,在写音乐律动灯效时需要实时捕获系统声音,在windows上需要使用 到CoreAudio的Loopback模式捕获。代码在Qt平台上运行,编译环境Qt5.15.2 MSVC2019 64bit以及Qt6.4.3 MSVC2019 64bit。信号发出后,在MainWindow的槽函数进行数据重排列、fft处理,就可以的到频谱了。这里用的fft库是kissfft,可在github上下载。

ok6018234的博客 1579

如何使用ArcGIS自动矢量化建筑

在显示的重分类对话框内,输入栅格选择提取单波段后的栅格,重分类分为三个层级,旧值分别为100-249、250-251和252-255,对应新值为1、2和3,旧值的最小和最大值不用修改,保持和原有的一致。同样在ArcToolbox内点击Spatial Analyst工具点击“重分类\重分类”,在重分类对话框内输入栅格选择之前重分类过后的图片,将旧值3的新值设置为1,这样分类后就只有两类。在显示的新建Shapefile对话框内,名称命名为折线,要素类型选择折线,点击编辑,设置坐标系为WGS 1984。

2165

Core Audio APIS in Vista/Win7

应用范围:     支持Vista/win7, 不支持XP 关于Windows Core Audio APIs     在Windows Vista及Windows 7操作系统下,微软为应用程序提供了一套新的音频组件来改进音频质量。Core Audio APIs提供了这些组件的使用方法,是更高级的APIs的实现基础。例如:DirectSound、DirectMusic、WaveXxx、mix...

冷月醉雪的博客 507

深入解析达梦数据库核心技术:检查点、redo、undo、MVCC与内存缓存刷盘

MVCC 依赖 undo 日志:通过 undo 日志构建版本链,实现 “读不加锁”;刷盘依赖检查点:检查点批量清理脏页,redo 日志通过检查点释放空间;日志保障刷盘安全:redo 日志先行写入,确保未刷盘脏页可恢复;刷盘优化 MVCC 性能:优先刷冷区脏页,减少对高频访问数据的影响。例如,一个完整的 “查询 - 修改 - 提交 - 恢复” 流程中:查询时,MVCC 通过 undo 日志获取可见版本,无需等待锁;修改时,redo/undo 日志先记录,缓冲池生成脏页;

tangyuan12345678的博客 1415

手把手教你用FPGA实现SGMII接口:从IP核配置到板级调试全流程

本文详细介绍了如何在Xilinx 7系列FPGA上实现SGMII(Serial Gigabit Media Independent Interface)接口的全流程,包括IP核配置、约束编写和硬件调试。通过具体的硬件选型建议、软件工具链配置和PCB设计规范,帮助开发者快速构建稳定可靠的千兆通信链路,并提供了常见故障排查和性能优化技巧。

weixin_29194693的博客 296

IAudioClient::Initialize报错AUDCLNT_E_UNSUPPORTED_FORMAT(0x88890008)的解决办法

IAudioClient::Initialize 初始化音频流的时候发生报错AUDCLNT_E_UNSUPPORTED_FORMAT(0x88890008)的解决办法

Timor_lxl的博客 3398

【WRF后处理】基于wrf-python处理wrf运行结果wrfout_d01

基于wrf-python处理wrf运行结果wrfout_d01

WW、forever的博客 5209

调研音频延时问题

已知: Windows 音频会话 API (WASAPI) 从 Windows 10 开始,WASAPI 已增强为: 允许应用程序发现给定音频设备的音频驱动程序支持的缓冲区大小范围(即周期性值)。这使应用程序可以在共享模式下打开流时在默认缓冲区大小 (10 毫秒) 或小缓冲区 (<10 毫秒) 之间进行选择。如果应用程序未指定缓冲区大小,则它将使用默认缓冲区大小。 允许应用程序发现音频引...

qq_39529180的博客 408

C/C++李峋同款跳动的爱心代码(完整代码)

C++语言实现出李峋同款跳动的爱心的完整代码。

AIGC 10万+

Archery通过OpenResty代理转发后登录一直提示Forbidden

测试几遍,连账号密码都没用验证,因为不管输什么都是提示Forbidden。找到配置文件settings.py,下面命令可到配置文件路径。回到页面刷新,随便输入个账号密码,验证失败证明请求成功了。查看Preview,提示CSRF验证失败,请求被中断。域名:dba.hkeasyspeed.com。打开开发者工具查看,网络里面可以看到报403。添加一条配置,把你配置域名添加进去。可以看到页面可以正常访问到。进入Archery容器。重启Archery容器。正常输入账号密码,OK。

万物皆可学 3147

音频解码到播放的全流程解析——一场从“乐谱”到“空气震动”的接力赛

音频解码播放流程:压缩音频数据(如MP3)通过解码器转为PCM格式,经可选的重采样、混音等处理后存入环形缓冲区。音频驱动将PCM数据送至DAC转换为模拟信号,最终由扬声器输出。整个过程涉及解码、格式处理、缓冲管理及硬件转换等关键环节,缓冲区大小影响播放延迟和流畅性。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 2491

YOLOv8模型轻量化实战:基于稀疏化剪枝与L1正则化的高效目标检测模型优化-附源码

本文提出一种YOLOv8轻量化方案,通过L1正则化稀疏化训练和动态阈值通道剪枝,在边缘计算场景中优化模型性能。方案分三步:首先通过L1正则诱导权重稀疏化并动态衰减系数;然后基于BN层权重统计进行通道剪枝,保留80%关键通道;最后对剪枝模型微调恢复精度。在COCO128数据集上验证,模型体积压缩40%,推理速度提升2.3倍,mAP仅下降0.4%,实现了精度与效率的平衡。该方案为移动端部署提供了可行的轻量化技术路径。

m0_64661770的博客 479

Windows下Core_Audio_APIs的使用简介

Windows Vista之后系统,音频系统相比之前的系统有很大的变化,产生了一套新的底层API即Core Audio APIs。该低层API为高层API(如Media Foundation(将要取代DirectShow等高层API)等)提供服务。该系统API具有低延迟、高可靠性、安全性等特点。 本文主要从实时音视频场景中,简单介绍该API的使用。 Core Audio APIs的组成:MMDevice、EndpointVolume、WASAPI等。对于实时音视频系统,...

netease_im的博客 1108

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Core Audio APIs 在Windows7的新特性

The Core Audio APIs是在Windows Vista中引入的,它提供了一组新的用户模式音频组件,客户端应用程序可以使用这些组件来呈现或捕获音频流,并提供音频质量。 The Core Audio APIs在Window 7中得到改善。以下是新特性:泛型的改进 ·在Windows 7中,共享模式流在低延迟模式下运行。音频引擎以pull模式运行,延迟显著降低。这对于需...

冷月醉雪的博客 438

Windows上的音频采集技术(转)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34409822的博客 563

WASAPI 01 采集默认设备的音频

音频采集或播放时,需要用MMDevice API来枚举和获取指定设备,用WASAPI来处理应用程序和音频设备之间的音频流数据,如采集或播放。1. MMDevice APIThe Windows Multimedia Device (MMDevice) API enables audio clients to discover audio endpoint devices, determine th...

建建的博客 6416

显示windows的音频的输入输出设备

#include "stdafx.h" /************************音频的输入输出设备**************************/ #include &lt;Mmdeviceapi.h&gt; #include &lt;Functiondiscoverykeys_devpkey.h&gt; #include &lt;locale.h&gt; ...

weixin_34297704的博客 552

涉及到的函数(自己查看使用,文章格式很乱)

GetWindowLongPtr http://msdn.microsoft.com/en-us/library/windows/desktop/ms633585(v=vs.85).aspx SetWindowLongPtr http://msdn.microsoft.com/en-us/library/windows/desktop/ms644898(v=vs.85).aspx

aibao1266的专栏 1328
上一篇: Core Audio API
下一篇: 混音器原理及Mixer API函数介绍1
LearnITing
博客等级 码龄15年 14粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值