我正在尝试以多声道(并行)方式在Windows XP上播放声音。我在某个地方读到过,用WinMM播放并行声音可能是不可能的,但我观察到了以下情况:
当我调用WaveOutOpen()一次,然后多次调用许多WaveOutWrite()时,声音就不是并行的-它们是排队的。
但是,当我调用WaveOutOpen 9次(然后存储9个句柄),然后用9种不同的声音调用9次WaveOutWrite()时,它们是并行播放(多通道)的-也就是说,它们是混合的。
它似乎可以工作,但我不确定它是否可以,因为我发现它在任何教程或文档中都没有明确说明。
用这么“多WaveOutOpen”的方式播放声音还可以吗??
发布于 2011-10-07 17:22:28
当我调用WaveOutOpen()一次,然后多次调用许多WaveOutWrite()时,声音是不并行的-它们是排队的。
这正是应该发生的事情。WaveOutWrite对下一个缓冲区进行排队。它允许你发送你想要播放的音频小块。
,但当我调用WaveOutOpen 9次(然后存储9个句柄),然后用9种不同的声音调用9次WaveOutWrite()时,它们是并行播放(多通道)的-也就是说,它们是混合的。
同样,这是正确的,也是意料之中的。这是播放多个同步声音的最简单方法。但是,如果您想要样本的精确混合,您应该自己将音频样本混合到一个样本流中,并通过单个WaveOut设备播放。
发布于 2011-10-07 17:35:38
如果你的产品是面向消费者的,我建议你使用DirectSound。
从DirectX8开始,该应用程序接口实际上是相当轻松的,并且大多数消费类机器都会安装它。
https://stackoverflow.com/questions/7676083
复制相似问题