我在Windows上用C ++编写程序。我需要支持Windows Vista +。
我想同时录制麦克风和扬声器。
我正在使用WASAPI,可以单独录制麦克风和扬声器,但我想只有一个流向我提供来自两个流的输入(例如,用于录制客户端弹奏吉他和音乐他听到他的耳机),而不是以某种方式将两个缓冲区合并在一起(我想这将导致我出现计时问题)。
有办法做到这一点吗?
答案 0 :(得分:0)
我实际上正在开发一个可以完全实现这一目标的库,从多个设备合并流。您可能想尝试一下:请参阅xt-audio.com。如果您自己实现这一点,请考虑以下事项:
不要为每个独立的流使用单独的线程。这将增加上下文切换,从而增加可实现的最小延迟。相反,将一个设备指定为主设备,等待该设备的事件被提升,然后从所有设备读取输入,无论它们是否“准备就绪”(这都是丢弃/填充起作用)。
< / LI>通常,您可以从WASAPI独占模式获得非常不错的性能,甚至可以同时运行多个流。但对于像现场性能一样重要的东西,您可能需要考虑使用ASIO驱动程序的专业音频接口,其中所有内容都会在同一时钟内完成,或者至少在驱动程序级别处理同步。