【发布时间】:2011-11-22 01:49:06
【问题描述】:
我在 Ubuntu 上,我想将 PulseAudio 输出录制到文件中,以录制 pygame 程序。格式无关紧要,因为我可以在之后更改它,所以原始音频就可以了。
环顾四周,GStreamer 似乎可以处理这个问题,但我对它并不熟悉,广泛搜索也没有得到答案。因此,欢迎涉及 GStreamer 或其他方式的答案。
谢谢!
【问题讨论】:
标签: audio-streaming gstreamer pulseaudio
我在 Ubuntu 上,我想将 PulseAudio 输出录制到文件中,以录制 pygame 程序。格式无关紧要,因为我可以在之后更改它,所以原始音频就可以了。
环顾四周,GStreamer 似乎可以处理这个问题,但我对它并不熟悉,广泛搜索也没有得到答案。因此,欢迎涉及 GStreamer 或其他方式的答案。
谢谢!
【问题讨论】:
标签: audio-streaming gstreamer pulseaudio
每个 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
【讨论】: