如何使用winsound同时播放多个声音?

Posted

技术标签:

【中文标题】如何使用winsound同时播放多个声音?【英文标题】:How to play multiple sounds simultaneously using winsound? 【发布时间】:2015-11-06 20:10:32 【问题描述】:

我正在尝试使用内置的 winsound 库将多个声音叠加在一起。我开始我的第一个声音

winsound.PlaySound("test1.wav", winsound.SND_FILENAME | winsound.SND_ASYNC) 

当我尝试启动其他声音时

winsound.PlaySound("test1.wav", winsound.SND_FILENAME | winsound.SND_ASYNC 
            | winsound.SND_NOSTOP)

我得到了不太具描述性的RuntimeError: Can't play sound。 我该如何解决?

【问题讨论】:

这看起来是基于 Windows PlaySound API 函数。在谷歌搜索了一下之后,我得到的印象是它不能混合多种声音。这是一个 SND_NOSTOP 标志,您可以尝试,但我不确定您是否会得到您想要的确切行为。看到这个问题:***.com/questions/16073675/… 我有 SND_NOSTOP 标志,但它仍然无法正常工作 我认为您需要另一个 API。 哦,好吧 :( 。有什么可行的建议吗?我看过 PyGame 的建议,但只播放一些背景音乐似乎有点矫枉过正。 【参考方案1】:

我可以使用 winsound 和 playsound 播放两种声音:

from playsound import playsound
import winsound
#
filename1 = "C:/Users/sound1.wav"
filename2 = "C:/Users/sound2.wav"
soundfile = filename1
winsound.PlaySound(soundfile, winsound.SND_FILENAME|winsound.SND_ASYNC)
playsound(filename2)

【讨论】:

以上是关于如何使用winsound同时播放多个声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中同时播放多个声音?

python winsound.playsound 找不到我的声音文件

如何同时播放多个声音文件?

如何使用连接到 AVAudioEngine 混音器的节点同时播放缓冲区中的多个声音

如何同时在多个设备中播放声音

使用 AVAudioPlayer 同时播放多个声音