PyAudio流读取在具有ALSA和pulseaudio

时间:2017-09-13 03:54:47

标签: python alsa pyaudio pulseaudio

我正在尝试在运行PulseAudio的Linux设备上获取Python中的音频数据。

以前pyaudio工作的环境只是ALSA。 现在环境运行PulseAudio。我通过将默认的ALSA设备设置为脉冲,将ALSA连接到PulseAudio。

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 - >端口音频 - > 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"
}

0 个答案:

没有答案