簡體   English   中英

在設置PyAudio Stream輸入和輸出為True時獲取IOError:[Errno輸入溢出] -9981

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM