Audio 音频挂钩或用于音频处理和路由到默认音频设备的自定义音频驱动程序

Audio 音频挂钩或用于音频处理和路由到默认音频设备的自定义音频驱动程序,audio,hook,driver,Audio,Hook,Driver,我为我的客户开发了一个相当复杂的音频软件,带有Winamp、Windows Media player和VST插件。现在客户端对避免维护大量插件的方法感兴趣,我们无法支持所有的媒体播放器 客户机还不支持Unix/Mac,因此我只能查看Windows XP和Vista/7/ 基本上,我们需要的是一种始终可靠地拦截尽可能多的音频流协议的方法(好吧,除了ASIO,我想这是另一个故事),然后通过我们的自定义效果引擎传递此音频,然后路由回默认的音频设备,不管它是什么 现在我在想,我有什么选择(理论上) 我可

我为我的客户开发了一个相当复杂的音频软件,带有Winamp、Windows Media player和VST插件。现在客户端对避免维护大量插件的方法感兴趣,我们无法支持所有的媒体播放器

客户机还不支持Unix/Mac,因此我只能查看Windows XP和Vista/7/ 基本上,我们需要的是一种始终可靠地拦截尽可能多的音频流协议的方法(好吧,除了ASIO,我想这是另一个故事),然后通过我们的自定义效果引擎传递此音频,然后路由回默认的音频设备,不管它是什么

现在我在想,我有什么选择(理论上)

我可以用钩子。我需要挂上全球更老的vaweOut和DirectSound

但这在Vista/7上仍然有效吗?

我可以使用虚拟驱动程序,就像虚拟音频电缆的作者所做的那样:

这似乎是一项相当艰巨的任务。无论如何,客户将联系VAC的作者,看看他是否同意以合理的价格出售他的源代码

此驱动程序可以将自身安装为默认音频输出设备,拦截来自Windows的音频流,并将其传递回默认设备。嗯,但是不同的DirectSound音频缓冲区呢,我必须自己混合它们吗?或者我有没有办法告诉Windows mixer为我混合所有音频并传递单个混合音频流? 看起来,这个定制驱动程序当然会杀死所有的硬件音频加速,但是如果我们警告我们的客户这个问题,我们可以接受它

据我所知,最新的Windows驱动程序标准是WDF

但它可能不适用于Windows Vista/7上的音频? 我知道,Vista/7的音频堆栈与XP不同

如果我可以使用WDF,我应该编写什么驱动程序-内核模式还是用户模式?


也许我缺少了在Windows上拦截、处理和路由音频的更优雅、更简单的选项?

试试虚拟音频流SDK。此外,虚拟声卡还可以让您实时读取/处理音频数据


尝试虚拟音频流SDK。此外,虚拟声卡还可以让您实时读取/处理音频数据