当 wav 文件完成时,PyAudio readframes 没有结束
PyAudio readframes not ending when wav file completes
目前正在对 PyAudio 进行一些试验。我目前的目标是导入一个 wav 文件并让 PyAudio 为我播放它。播放它实际上是最简单的部分 - 困难的部分是在 wav 文件完成后关闭流。现在我的代码永远不会退出 while 循环。我听到 wav 文件的声音,然后随着代码继续不向流中写入任何内容而静音。
import wave
import pyaudio
wav = wave.open('./5secondbeat.wav')
p = pyaudio.PyAudio()
chunk = 1024
stream = p.open(format = p.get_format_from_width(wav.getsampwidth()),
channels = wav.getnchannels(),
rate = wav.getframerate(),
frames_per_buffer = chunk,
output = True)
data = wav.readframes(chunk)
while data != '': //enters this loop
stream.write(data) //I hear my short 5 second wave file
data = wav.readframes(chunk)
print('hello') //this never gets printed and my code continues running in the loop
stream.close()
p.terminate()
我错过了什么?
您条件中的数据类型不对应。在检查之前,您可以尝试其中一种将它们转换为相同的类型:
while data != b'':
或
while data.decode("utf-8") != '':
目前正在对 PyAudio 进行一些试验。我目前的目标是导入一个 wav 文件并让 PyAudio 为我播放它。播放它实际上是最简单的部分 - 困难的部分是在 wav 文件完成后关闭流。现在我的代码永远不会退出 while 循环。我听到 wav 文件的声音,然后随着代码继续不向流中写入任何内容而静音。
import wave
import pyaudio
wav = wave.open('./5secondbeat.wav')
p = pyaudio.PyAudio()
chunk = 1024
stream = p.open(format = p.get_format_from_width(wav.getsampwidth()),
channels = wav.getnchannels(),
rate = wav.getframerate(),
frames_per_buffer = chunk,
output = True)
data = wav.readframes(chunk)
while data != '': //enters this loop
stream.write(data) //I hear my short 5 second wave file
data = wav.readframes(chunk)
print('hello') //this never gets printed and my code continues running in the loop
stream.close()
p.terminate()
我错过了什么?
您条件中的数据类型不对应。在检查之前,您可以尝试其中一种将它们转换为相同的类型:
while data != b'':
或
while data.decode("utf-8") != '':