本文主要是介绍多声卡同时发声的技术方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Windows操作系统下,一般只能选择一个扬声器发声音。如在Windows10中的扬声器列表如下:
那么有没有让这些扬声器同时发声呢?如我们可以使用类似e2esoft进供的方案,在电脑是虚拟一个声卡,然后让这个虚拟的声卡做为做为电脑默认的虚拟声卡。然后在应用层可以通过wasapi函数获取默认声卡的数据,再二次分发给我们需要播放声音的声卡,这样就完成了多个声卡同时播放声音。
虚拟声卡的开发Windows提供了参考DEMO驱动,主要使用的是portclass进行虚拟开发。
portclass的开发相关技术资料可参考:http://www.pnpon.com
当然,这个是别人提供的方案,我们通过学习了windows音频的驱动架构,其实完全可以使用一个虚拟的总线开发一个总线驱动,对上层avstream.sys上报一个UAC扬声器设备。这样就绕过了复杂的ks驱动等微软关于流式内核驱动复杂的相关概念,回归到简单的USB-UAC音频驱动开发。这个是我擅长了,本人也总结了UAC规范,想学习的同学可点击这里 http://www.usbzh.com
其实本人在开发过程中更多的涉及到的是麦克风和UVC摄像头驱动开发,当时使用USB虚拟总线驱动对上层分别枚举了一个UVC虚拟摄像头和UAC麦克风,然后通过上层自定义的IOCTL实现了数据的回传。
这篇关于多声卡同时发声的技术方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!