python-3.x - 无法识别 WAV 文件的文件结尾
问题描述
我去https://people.csail.mit.edu/hubert/pyaudio/看了一下pyaudio的使用方法,发现play的例子有问题:
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
运行时,此循环永远不会退出并挂在无限循环中。我将代码更改为倒计时int(RATE / CHUNK * RECORD_SECONDS)
并添加更多周期,并在打印输出时看到以下数据:
c\x01\x9e\x01\x91\x01\xa5\x01\xaf\x01\xb8\x01\xb1\x01\xb8\x01'
i is: 5
data is: b''
i is: 4
data is: b''
i is: 3
data is: b''
i is: 2
data is: b''
i is: 1
data is: b''
Start shutting down
An exception has occurred, use %tb to see the full traceback.
因此,当运行 wav 文件数据时,会传递空格,但它们不会像示例代码所暗示的那样注册。我试过'b\'\'',转义单引号,但程序仍然无限循环,invalid syntax
当我使用`字符时出现错误。
有谁知道为什么到达 EOF (null) 时代码不会结束执行?pyaudio 页面说要在这里检查,但我没有发现任何关于这个问题的信息。
解决方案
我无法回答为什么会发生这种情况,但我遇到了同样的问题,并且能够通过将 while 条件更改为像网站“文档”部分的代码示例一样工作来解决这个问题:
while len(data) > 0:
stream.write(data)
data = wf.readframes(CHUNK)