获取 IOError: [Errno Input overflowed] -9981 将 PyAudio Stream 输入和输出设置为 True
Posted
技术标签:
【中文标题】获取 IOError: [Errno Input overflowed] -9981 将 PyAudio Stream 输入和输出设置为 True【英文标题】:Getting IOError: [Errno Input overflowed] -9981 when setting PyAudio Stream input and output to True 【发布时间】:2012-01-23 22:32:54 【问题描述】:我正在尝试在我的 Mac (OS 10.7.2) 上运行以下代码(来自 PyAudio 文档的示例):
import pyaudio
import sys
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
output = True,
frames_per_buffer = chunk)
print "* recording"
for i in range(0, 44100 / chunk * RECORD_SECONDS):
data = stream.read(chunk)
stream.write(data, chunk)
print "* done"
stream.stop_stream()
stream.close()
p.terminate()
我给出的错误是:
Traceback (most recent call last):
File "PyAudioExample.py", line 24, in <module>
data = stream.read(chunk)
File "/Library/Python/2.7/site-packages/pyaudio.py", line 564, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
我在 Google 上搜索了这个错误,发现将块放大或缩小都会有所帮助。我试过这个,没有任何区别。我还尝试添加以下代码来捕获重载异常:
try:
data = stream.read(chunk)
except IOError as ex:
if ex[1] != pyaudio.paInputOverflowed:
raise
data = '\x00' * chunk
这避免了错误,但我没有输出我的输入音频,而是听到了一堆响亮的点击声。
为了排除故障,我注释掉了 output=True 行,程序运行良好,但没有输出任何内容。我注释掉了 input=True 并改为读取 Wave 文件,并且流能够输出音频。我尝试创建 2 个流,一个用于输入,一个用于输出,但也没有用。
我还能做些什么来避免这个错误吗?
【问题讨论】:
见***.com/questions/33837097/… 【参考方案1】:当我手动安装 pyaudio(从源代码构建的 portaudio)时,我遇到了同样的情况, 一个不太完美的解决方法是下载 Apple Mac OS X (Universal) 的 pyaudio 安装它,它只会为 python 2.6 和以前的版本安装它。 如果你用 /usr/bin/python2.6 运行你的代码,那么你就完成了。 但如果你真的想要 2.7,请将已安装的模块(pyaudio.py、_portaudio.so)复制到 2.7 文件夹 /Library/Python/2.7/site-packages/。
我不知道为什么它不能从源代码构建模块。
【讨论】:
【参考方案2】:portaudio 中存在一个错误,直到最近才导致 OS X 中出现许多虚假溢出错误(请参阅http://music.columbia.edu/pipermail/portaudio/2012-June/014167.html)。
我已经确认,截至 2012 年 8 月 6 日的 portaudio 每日快照修复了该错误。
【讨论】:
我有最新的 portaudio(版本 19.20111121_4)以及 py27-pyaudio 0.2.7_0,无论我如何尝试更改块大小,我仍然会收到此错误。我正在使用带有 python 2.7 的 mac os x 1.7.5,你能否分享更多关于如何让 portaudio 每日快照工作的信息?以上是关于获取 IOError: [Errno Input overflowed] -9981 将 PyAudio Stream 输入和输出设置为 True的主要内容,如果未能解决你的问题,请参考以下文章
编程58--代码share&debug17IOError: [Errno 5] Input/output error 问题解决
IOError:[Errno 套接字错误] 使用 BeautifulSoup
Python 请求:IOError:[Errno 22] 无效参数
如何解决打开文件时出现IOError[errno 17]文件?
在 os.system() 期间,啥会导致“IOError: [Errno 9] Bad file descriptor”?