Python PyAudio流读取在带有ALSA和pulseaudio的设备上阻塞(无数据)
我试图在运行PulseAudio的Linux设备上用Python获取音频数据 pyaudio以前的工作环境也是如此。 现在环境运行PulseAudio。我将默认的ALSA设备设置为脉冲,从而将ALSA连接到PulseAudioPython PyAudio流读取在带有ALSA和pulseaudio的设备上阻塞(无数据),python,alsa,pyaudio,pulseaudio,Python,Alsa,Pyaudio,Pulseaudio,我试图在运行PulseAudio的Linux设备上用Python获取音频数据 pyaudio以前的工作环境也是如此。 现在环境运行PulseAudio。我将默认的ALSA设备设置为脉冲,从而将ALSA连接到PulseAudio arecord-f dat test.wav然后aplay test.wav现在对我来说效果很好 但是,pyaudio似乎无法在这些设置下工作 import pyaudio import wave CHUNK = 1024 FORMAT = pyaudio.paInt1
arecord-f dat test.wav
然后aplay test.wav
现在对我来说效果很好
但是,pyaudio似乎无法在这些设置下工作
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
stream.read(CHUNK)
stream.read()
挂起<代码>strace显示它卡在以下循环中:
poll([{fd=3, events=POLLIN|POLLERR|POLLNVAL}], 1, 3) = 1 ([{fd=3, revents=POLLIN}])
我猜这里的元问题是,pyaudio->port audio->alsa->PulseAudio的堆栈是否工作?如果没有,是否有一种从PulseAudio获取Python音频的标准方法?在过去的几年里,很多python/PulseAudio顶级库都没有任何活动
我的asound.conf看起来像这样
pcm.!default{
type plug
route_policy "average"
slave.pcm "asymed"
}
pcm.asymed{
type asym
playback.pcm "pulse_playback"
capture.pcm "pulse_capture"
}
pcm.pulse_playback {
type pulse
device "alsa_output.platform-sound_0.analog-stereo"
}
pcm.pulse_capture {
type pulse
device "alsa_input.platform-sound_1.analog-stereo"
}
您的参数对应于
-f cd
;这是否适用于arecord
?哪个设备正在使用?-f cd工作。my asound.conf指定pulseaudio为默认设备(这可能是不指定设备的情况下arecord/aplay的工作方式),因此pyaudio可能应该使用它。但是我也尝试过为默认设备手动输入设备索引。您的参数对应于-f cd
;这是否适用于arecord
?哪个设备正在使用?-f cd工作。my asound.conf指定pulseaudio为默认设备(这可能是不指定设备的情况下arecord/aplay的工作方式),因此pyaudio可能应该使用它。但我也尝试手动为默认设备传递输入设备索引。