将 PyAudio Stream 输入和输出设置为 True 时出现 IOError: [Errno Input Overflowed] -9981

2024-05-10

我尝试在我的 Mac(操作系统 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

我在谷歌上搜索了这个错误,发现增大或减小块都会有所帮助。我尝试过这个,但没有什么区别。我还尝试添加以下代码来捕获过载异常:

try:
    data = stream.read(chunk)
except IOError as ex:
    if ex[1] != pyaudio.paInputOverflowed:
        raise
    data = '\x00' * chunk

这避免了错误,但我没有输出输入音频,而是听到了一堆响亮的咔哒声。

为了排除故障,我注释掉了output=True行,程序运行良好,但没有输出任何内容。我注释掉了 input=True 并读取了 Wave 文件,并且该流能够输出音频。我尝试创建 2 个流,一个用于输入,一个用于输出,但这也不起作用。

我还可以采取其他措施来避免此错误吗?


当我手动安装 pyaudio (从源代码构建 portaudio )时,我遇到了同样的情况, 一个不太完美的解决方法是下载 pyaudio苹果 Mac OS X(通用) http://people.csail.mit.edu/hubert/pyaudio/安装它,这只会为 python 2.6 及之前的版本安装它。 如果您使用 /usr/bin/python2.6 运行代码,那么您就完成了。 但如果你确实想要 2.7,请将安装的模块(pyaudio.py、_portaudio.so)复制到 2.7 文件夹 /Library/Python/2.7/site-packages/。

我不知道为什么它不能从源代码构建模块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 PyAudio Stream 输入和输出设置为 True 时出现 IOError: [Errno Input Overflowed] -9981 的相关文章

随机推荐