python - wav 文件完成时 PyAudio readframes 未结束

标签 python pyaudio

目前正在使用 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") != '':

关于python - wav 文件完成时 PyAudio readframes 未结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282650/

相关文章:

python - 以交互模式调用编辑器

python - 我无法使用 pyaudio 运行简单代码 - [Errno -9996] 无效输出设备(无默认输出设备)

python - 处理实时音频而无需使用pyaudio进行编译

python - 安装pyaudio时,pip在/usr/local/include中找不到portaudio.h

python - 我正在使用 python 3.9,但不知道如何在 Windows 10 中安装 pyaudio

python - 在 Keras 中实现标准化流程

python - 将列表转换为 numpy 数组而不使用太多 RAM

python - 带 Pyaudio 的 MP3

python - 将 Javascript 数组转换为 python 列表?

python - sqlalchemy 批量插入比构建原始 SQL 慢