我需要做一个函数,当调用一个特定的歌曲必须播放。在
代码如下:
import pyaudio
import wave
chunk = 1024
p = pyaudio.PyAudio()
beat = wave.open(r"D:/Escritorio/beat.wav","rb")
stream = p.open(format = p.get_format_from_width(beat.getsampwidth()),
channels = beat.getnchannels(),
rate = beat.getframerate(),
output = True)
def play_song(b, s, c):
data = b.readframes(c)
while data != '':
s.write(data)
data = b.readframes(c)
b.rewind()
s.stop_stream()
for _ in range(10):
#Should play the audio file 10 times, but nothing happens
play_song(beat, stream, chunk)
如果我把beat
和stream
定义放在函数中,它工作得很好,但是每次迭代之间的时间必须尽可能短,这样做会造成大约0.1秒的延迟,这对于这个目的来说实际上是相当糟糕的。在
这里的答案是使用回调,它异步播放音频。在
相关问题 更多 >
编程相关推荐