3

我有一个问题(现在已经有一段时间了)——Vista 中的新混音器堆栈具有新的很酷的东西,但也重新发明了轮子。许多过去在 Windows 系统上使用 Volume Mixer 将不同的有声输出混合到一个输入(例如 Wave-out + Line-in --> Stereo Mix)的应用程序已经停止工作。这种行为的主要例子是 Shoutcast DSP 插件(可能对解决方案测试有用)。

如何重新启用 XP 混音器控件,或者以某种方式模拟这种行为,以便程序 (SC DSP) 可以正确管理麦克风/线路输入播放音量以及 Wave-out 播放音量?

我的想法是模拟一个连接到 Vista 混音器中的程序,用于 Wave-Out 和 Line-out(或麦克风扬声器音量——所有播放,显示为单独的可调节“程序”,以便 Vista 混音器可以参考它)并在某种模拟下将其“挂钩”到系统中,该模拟将自己作为程序的旧音量混音器控制界面,但坦率地说,我不知道该怎么做。

澄清一下:这不是我的 PC(它是 HP Pavilion 笔记本电脑)。问题的存在似乎主要是因为 Vista 混音器控制单独的程序,而不是单独的输入/输出。硬件完全能够完成使用 Windows XP 时所需的操作。我很清楚这是一个驱动程序问题,但驱动程序只是为 Vista 通过接口呈现给程序员的内容而准备的。混音器设备 - 如在操作系统中所见,但它可能在软件中 - 基于用于 Windows 音频控制的混音器 API。

在 Vista 上使用 Google 搜索和线路输入播放音量控制以获取有关该问题的更多信息(以及受其影响的用户数量)。当然,为 WinAMP 重写 Shoutcast Source DSP 插件就可以了,但这不太可能发生……

4

4 回答 4

4

可以使用音频端点 API在 Windows Vista 混音器中控制声卡的单独输入/输出电平

这应该允许您调整主音量,以及连接的音频输入的音量。关于这一点的一个问题是,当您枚举端点时,如果您的声卡中没有插入麦克风,则不会枚举任何内容。这意味着您需要更改应用程序以响应“麦克风插入”事件,并适当地通知用户。

另一种选择是低于 Microsoft Core Audio 并直接访问WaveRT驱动程序。这比使用 WASAPI/Endpoint API 需要更多的工作,但可以让您最大程度地控制对声卡的输入/输出的访问。

于 2008-09-26T14:08:31.593 回答
3

音频驱动程序控制哪些混音器控件可用,这在很大程度上取决于硬件的功能。

如果 Vista 驱动程序没有某些控件,那么很可能是该驱动程序的缺点,而不是 Vista 的缺点。

(请告诉我们您使用的是哪种声卡/设备。)

可以编写一个程序来创建自己的混音器控件(这将是虚拟声卡的纯软件驱动程序),但如果实际驱动程序,该程序将无法影响设备内部的音频路由对此没有一些混音器控制。

于 2008-09-16T11:31:17.597 回答
2

如果您将您的应用程序标记为以 Windows XP 兼容性运行,那么所有旧控件和行为都将恢复。

于 2009-07-26T22:45:25.520 回答
1

如果您将您的应用程序标记为以 Windows XP 兼容性运行,那么所有旧控件和行为都将恢复。

确实如此,但从包含在 SP2 中的 Vista SP1 补丁 KB957388 以及一些声卡驱动程序开始,当应用程序处于 XP 兼容模式时,旧的混音器 API (winmm.dll) 函数可能会挂起。特别是,mixerGetNumDevs 和少见的 mixerOpen 不会在某些计算机上返回。

在大约 200 个 Vista 用户中,我收到了来自 5 个 Vista 用户的报告,其中我的应用程序在启动时挂起,并且我已经追踪到这些功能挂起。

我想将此情况报告给 Microsoft,但找不到任何可以这样做的地方。

我现在所能做的就是在未启用兼容模式的情况下发布我的软件,但这会在我的应用程序中失去功能,并且该软件无法控制线路输入或麦克风混音器。

我没有时间直接使用低级 API 函数。我依赖高级组件,我找不到任何用于我的开发系统 (Delphi) 的新音频 API。

我有兴趣花钱请人为我写一个 DLL !!!电子邮件 ross att stationplaylist dott com

于 2009-08-19T01:44:41.290 回答