我已经为我的客户开发了一个非常复杂的音频软件,包括Winamp、和VST插件。现在客户对某种方法感兴趣,以避免维护大量的插件,我们没有办法支持所有媒体播放器。
客户端还不关心Unix/Mac,所以我只能查看Windows XP和Vista/7/基本上,我们需要的是始终可靠地拦截尽可能多的音频流协议(我想,可能是ASIO除外),然后通过我们的自定义效果引擎传递这个音频,然后返回到默认的音频设备,不管是什么。
现在我在想,我有什么选择(理论上)。
我可以用钩子。我需要连接全球较老的vaweOut和DirectSound。
,但这在Vista/7上仍然有效吗?
我可以使用虚拟驱动程序,就像虚拟音频电缆的作者一样:http://software.muzychenko.net/eng/vac.htm
似乎是一项相当艰巨的任务。无论如何,客户会联系VAC的作者,看看他是否同意以合理的价格出售他的源代码。
此驱动程序可以将自身安装为默认音频输出设备,从Windows拦截音频流,并将其传回默认设备。嗯,但是对于各种DirectSound音频缓冲区,我必须自己混合它们,还是有任何方法可以让Windows为我混合所有的内容并传递一个混合音频流呢?看起来,这个定制的驱动程序当然会杀死所有硬件音频加速,但如果我们警告我们的客户这个问题,我们可以接受这一点。
据我所知,最新的Windows驱动程序标准是WDF。
,但也许它不适用于Windows /7?,我知道,Vista/7有一个不同于XP的音频堆栈。
如果我可以使用WDF,我应该编写什么驱动程序?内核模式还是用户模式?
也许我错过了更优雅和简单的选项来拦截、处理和路由Windows上的音频?
发布于 2012-05-02 16:51:15
尝试虚拟音频流SDK。另外,视频声卡,让您读取/处理音频数据的实时。
http://www.virtualaudiostreaming.net/sdk-license.html
https://stackoverflow.com/questions/9470314
复制相似问题