You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让C++桌面应用启用Windows自动音频闪避且不闪避自身音频

问题:Windows默认自动音频闪避导致自身应用音频被闪避

我在C++桌面应用中尝试启用Windows默认自动音频闪避:通过打开mmsys.cpl进入「通信」选项卡配置,期望仅让Spotify、浏览器(如YouTube)等第三方应用的音频被闪避,自身应用的重要音频不受影响,避免被背景音覆盖。

但目前的问题是:不仅第三方应用的音频会被闪避,我自己的应用音频也会被闪避。最直观的测试方法是,将Windows声音设置中的音频闪避选项改为「静音其他所有声音」,此时自身应用音频也会被静音。

我是从微软的音频闪避示例中提取的功能,该示例模拟了WASAPI聊天这类通信会话/活动。我推测问题根源在于:虽然是我的应用开启了通信流,但示例中的通信活动优先级可能覆盖了自身应用的音频会话,导致自身音频也触发了闪避逻辑。我认为需要修改示例代码中的WasapiChat.Cpp部分来解决这个问题。

我明确要求使用Windows原生集成的「自动」音频闪避功能(即系统设置里的预设功能),而非通过自定义逻辑手动调低其他应用音量。目前找到两个直接相关的API:

  • IAudioSessionControl2::SetDuckingPreference:仅能在自动闪避行为和自定义行为之间切换(本质是关闭自动闪避),无法满足需求。
  • IAudioClientDuckingControl::SetDuckingOptionsForCurrentStream:我正在测试这个API,但它存在最低Windows版本要求的限制。

欢迎提供修改、调整或新增代码的具体建议,核心目标是让自身应用音频不被Windows的自动闪避机制影响。

内容的提问来源于stack exchange,提问作者Ivan Rovelov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:48:39