操作系统:Mac OSX 10.7.5
Python版本:Python 2.7.3(homebrew)
pyaudio版本:0.2.7
portaudio版本:19.20111121(homebrew-portaudio)
以下脚本输出以下内容并显示我遇到的问题:
#!/usr/bin/env python
import pyaudio
from pprint import pprint
p = pyaudio.PyAudio()
# SUCCEEDS
pprint(p.is_format_supported(input_format=pyaudio.paInt8,input_channels=1,rate=44100,input_device=0)) # => True
try:
stream = p.open(format=pyaudio.paInt8,channels=1,rate=44100,input=True,frames_per_buffer=1024)
data = stream.read(1024)
except IOError as e:
print 'This never happens: '+str(e)
# FAILS
pprint(p.is_format_supported(input_format=pyaudio.paInt8,input_channels=1,rate=22050,input_device=0)) # => True
try:
stream = p.open(format=pyaudio.paInt8,channels=1,rate=22050,input=True,frames_per_buffer=1024)
data = stream.read(1024)
except IOError as e:
print 'This fails: '+str(e)
# FAILS
pprint(p.is_format_supported(input_format=pyaudio.paInt8,input_channels=1,rate=22050,input_device=0)) # => True
try:
stream = p.open(format=pyaudio.paInt8,channels=1,rate=22050,input=True,frames_per_buffer=512)
data = stream.read(1024)
except IOError as e:
print 'This also fails: '+str(e)
# FAILS
pprint(p.is_format_supported(input_format=pyaudio.paInt8,input_channels=1,rate=11025,input_device=0)) # => True
try:
stream = p.open(format=pyaudio.paInt8,channels=1,rate=11025,input=True,frames_per_buffer=512)
data = stream.read(1024)
except IOError as e:
print 'This also fails as well: '+str(e)
stream.stop_stream()
stream.close()
p.terminate()
上述代码会输出以下内容:
True
True
This fails: [Errno Input overflowed] -9981
True
This also fails: [Errno Input overflowed] -9981
True
This also fails as well: [Errno Input overflowed] -9981
portaudio
/pyaudio
版本)进行测试时,即使所有后续调用都使用与第一个调用相同的格式,它始终在第二个及以后的所有调用中100%地给出相同的错误。因此,我怀疑问题根本不在于格式。 - abarnertstop_stream
和close
,这意味着你正在泄漏某些东西,阻止未来的流正常工作。但是,从一个快速测试来看,即使有了这个修复,我似乎仍然会得到相同的错误。(当然,你应该做出这个修复。) - abarnert