[英]Getting IOError: [Errno Input overflowed] -9981 when setting PyAudio Stream input and output to True
我正在嘗試在我的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
這避免了錯誤,但我沒有輸出我的輸入音頻,而是聽到一堆響亮的聲音。
要進行故障排除,我注釋掉了輸出= True行,程序運行正常,但沒有輸出任何內容。 我注釋掉了輸入= True並在Wave文件中讀取,然后流能夠輸出音頻。 我嘗試創建2個流,一個用於輸入,一個用於輸出,這也不起作用。
我還能做些什么來避免這個錯誤嗎?
當我手動安裝pyaudio(從源代碼構建portaudio)時遇到相同的情況,一個不太完美的解決方法是下載python用於Apple Mac OS X(通用)安裝它,它只會安裝它用於python 2.6和以前的版本。 如果你使用/usr/bin/python2.6運行代碼,那么你就完成了。 但如果你真的想要2.7,請將已安裝的模塊(pyaudio.py,_portaudio.so)復制到2.7文件夾/Library/Python/2.7/site-packages/。
我不知道為什么它不能從源代碼構建模塊。
在portaudio中有一個錯誤,直到最近在OS X中引起了許多虛假的溢出錯誤(參見http://music.columbia.edu/pipermail/portaudio/2012-June/014167.html )。
我已經確認截至2012-08-06的portaudio每日快照修復了該錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.