2011-09-21 21 views
5

Jestem na Ubuntu i chcę nagrać wyjście PulseAudio do pliku, aby nagrać program pygame. Format nie ma znaczenia, ponieważ mogę go później zmienić, więc surowy dźwięk jest w porządku.Streaming PulseAudio do pliku (prawdopodobnie z GStreamer)

Rozejrzałem się, wygląda na to, że GStreamer może sobie z tym poradzić, ale nie znam go dobrze, a obszerne wyszukiwanie nie dało odpowiedzi. Więc odpowiedzi z GStreamer lub w inny sposób są mile widziane.

Dzięki!

Odpowiedz

15

Jest monitor dla każdego zlewu pulseaudio. Wystarczy, aby uzyskać jego nazwę:

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

Linia Uwaga monitor Źródło: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor. To jest twoje źródło monitora.

Po pierwsze, trzeba go wyłączyć wyciszenie:

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

I teraz można nagrywać formę dźwięku to:

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

Albo z lame:

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

To samo może być zrobić z gstreamerem, ale nie ma sensu, jeśli nie potrzebujesz skomplikowanego przetwarzania:

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