Потоковая передача PulseAudio в файл (возможно, с помощью GStreamer) - PullRequest
6 голосов
/ 21 сентября 2011

Я нахожусь на Ubuntu и хочу записать вывод PulseAudio в файл, чтобы сделать запись программы Pygame.Формат не имеет значения, потому что я могу изменить его позже, так что сырой звук в порядке.

Оглядываясь вокруг, кажется, что GStreamer может справиться с этим, но я не знаком с этим,расширенный поиск не дал ответа.Так что ответы с участием GStreamer или иным образом приветствуются.

Спасибо!

1 Ответ

16 голосов
/ 21 сентября 2011

Для каждого приемника импульса звука есть монитор. Вам просто нужно получить его имя:

$ 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
...