gpt4 book ai didi

Windows 音量控制 - 应用程序与设备

转载 作者:可可西里 更新时间:2023-11-01 09:37:50 27 4
gpt4 key购买 nike

我的 VoIP 应用程序托管在 Win7 上。它包括音量控制。由于 Win Vista 引入了通过混音器 API 单独控制每个应用程序音量的功能,因此我选择了它。所以,我使用:

  • 混音器打开
  • mixerSetControlDetail - 更改我的应用程序的音量级别
  • mixerGetControlDetail - 获取我的应用程序的音量级别

mixerOpen 调用是使用 CALLBACK_WINDOW 进行的,我有一个窗口设置来捕获控制消息,包括 MM_MIXM_CONTROL_CHANGE。此事件触发我通过调用 mixerGetControlDetail 来刷新我的音量级别。

这很好用。我可以转到 Windows 音量混合器面板并更改我的应用程序的音量 slider 。我收到 MM_MIXM_CONTROL_CHANGE 消息,并且 mixerGetControlDetail 返回的值具有更新的级别。

但是,如果我更改设备级别,则不会收到此类通知。如果我查询我的应用程序的音量级别,它保持不变。然而,当我滑动设备音量 slider 时,应用程序的音量 slider 在音量混合器对话框中发生变化。

我以为我了解混音器 API 和 IAudioEndpointVolume(Callback) 的区别,但显然我遗漏了一些东西。为什么混音器会为我的应用返回相同的音量级别,即使 Windows 音量混音器面板显示它发生变化?

最佳答案

好的,我现在明白了,这非常有道理。

应用音频 -> 应用音量控制 -> 混音器 -> 设备音量控制 -> 设备。

应用程序音量控制确实是独立于设备的控件。 Windows 音量混合器对话框 slider 表示应用程序 slider 级别相对于设备 slider 级别(即级别 =(设备级别 *(应用程序音量控制/最大值))/最大值)。

因此,当两个 slider 都从 100%(控制值 = 65536)开始时,然后随着设备级别升高/降低,应用级别会跟踪它。但是,如果应用级别在设备级别的 50% (32767) 处启动,则当设备级别达到 50% (32767) 时,应用级别将达到 25%。应用程序音量控制的标量保持不变,但 slider 级别跟踪设备级别。

关于Windows 音量控制 - 应用程序与设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768322/

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