首页 > 解决方案 > 无法识别 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 页面说要在这里检查,但我没有发现任何关于这个问题的信息。

标签: python-3.xpyaudio

解决方案


我无法回答为什么会发生这种情况,但我遇到了同样的问题,并且能够通过将 while 条件更改为像网站“文档”部分的代码示例一样工作来解决这个问题:

while len(data) > 0:
    stream.write(data)
    data = wf.readframes(CHUNK)

推荐阅读