gpt4 book ai didi

c++ - DSSCL_EXCLUSIVE 不提供独占的音频输出。 DirectSound

转载 作者:行者123 更新时间:2023-11-28 03:56:53 27 4
gpt4 key购买 nike

很简单的问题。在MSDN documentation对于 DirectSound API,他们声明当我的应用程序处于焦点时,它将是唯一可听见的程序。这正是我想要发生的,但是当设置这个标志并通过我的应用程序播放声音时,我仍然可以听到计算机上的背景音乐。

那么问题来了,为什么?是因为应用程序使用不同的低级 API 播放背景音乐,从而使用不同的混合缓冲区吗?还是我需要调整其他一些小技巧才能成为唯一可发声的应用程序。

我问了一个类似/相关的问题 here ,没有回应。但是,如果您不知道特定 DirectSound 问题的答案,但您知道如何使用不同的 API 成为唯一的可发声应用程序,请再次告诉我!

谢谢,我使用的是 Windows XP 32 位专业版,如果它有所作为的话。

最佳答案

很久以前,Windows 开发人员意识到允许一个应用程序完全控制音频系统(从而使其他应用程序静音)是一个坏主意。然后他们随后弃用了许多这些“独占”和前景/背景模式标志。我相信这种行为变化一直追溯到 DirectX 7.1 (WinME),然后正式出现在 DX 8 上。这是 10 年前的事了。

想象一下,当您将前台应用程序切换到以某种独占模式运行音频的应用程序时,您的视频 session 应用程序会变得静音。在应用之间切换时无法可靠地听到任何人的声音不是很好的体验。

事实上,在 DX 8 之前,许多流行的多人游戏语音通信应用程序会不断嗅探前景窗口句柄,并将其用于调用 SetCooperativeLevel,这样它们就不会被静音。

我认为了解“您真正想做什么?”会很有趣。这让您假设您需要完全控制音频输出。

在 Vista 和更高版本上,有用于低级音频的 WASAPI api。我相信有一个“独占”模式的概念,但我不知道是否胜过使用声卡的其他应用程序。 YMMV.

关于c++ - DSSCL_EXCLUSIVE 不提供独占的音频输出。 DirectSound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com