音频流 – 将PulseAudio流式传输到文件(可能使用GStreamer)

我在Ubuntu上,我想将PulseAudio输出记录到文件中,以记录pygame程序.格式没关系,因为我之后可以改变它,所以原始音频很好.

环顾四周,似乎GStreamer可能能够解决这个问题,但我对它并不熟悉,并且广泛的搜索还没有得出答案.因此欢迎涉及GStreamer或其他方面的答案.

谢谢!

最佳答案
每个pulseaudio接收器都有一个监视器.你只需要得到它的名字:

$pactl list
...
Sink #0
    State: RUNNING
    Name: alsa_output.pci-0000_00_1b.0.analog-stereo
    Description: Internal Audio Analog Stereo
    Driver: module-alsa-card.c
    Sample Specification: s16le 2ch 44100Hz
    Channel Map: front-left,front-right
    Owner Module: 4
    Mute: no
    Volume: 0:  40% 1:  40%
            0: -23.87 dB 1: -23.87 dB
            balance 0.00
    Base Volume:  96%
                 -1.00 dB
    Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
    Latency: 119973 usec, configured 210000 usec
    Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
    ...

注意行监视源:alsa_output.pci-0000_00_1b.0.analog-stereo.monitor.它是您的监视器源.

首先,您需要取消静音:

$pacmd
Welcome to PulseAudio! Use "help" for usage information.
>>> set-source-mute alsa_output.pci-0000_00_1b.0.analog-stereo.monitor false
>>> exit

现在你可以录制它的声音了:

$parec \
>     --format=s16le \
>     --device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
> | oggenc --raw --quiet -o dump.ogg -

或者跛脚:

$parec \
>    --format=s16le \
>    --device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
> | lame -r - dump.mp3

使用gstreamer也可以这样做,但如果你不需要一些复杂的处理,那就没有多大意义了:

$gst-launch-0.10 \
>  pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
>  ! lame \
>  ! filesink location=dump.mp3

转载注明原文:音频流 – 将PulseAudio流式传输到文件(可能使用GStreamer) - 代码日志