audio-streaming - 将PulseAudio流传输到文件(可能使用GStreamer)

标签 audio-streaming gstreamer pulseaudio

我在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 -

或with脚:
$ 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

关于audio-streaming - 将PulseAudio流传输到文件(可能使用GStreamer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502380/

相关文章:

macos - 如何通过互联网传输半直播音频

java - 如何通过AudioTrack播放大型PCM文件? (目前出现错误)

audio-streaming - 有没有办法在没有 Flash 的情况下使用音频播放器?

c - 如何包含 pulseaudio 核心 header ?

java - 在 Ubuntu 上通过 PulseAudio 从 Java 播放音频文件时出错

android - 我可以访问Android设备的音频输出以便在用户听到声音之前对其进行修改吗?

c++ - Qt添加库gstreamer-1.0

audio - 播放 “mp3”音频文件的简单gstreamer代码出错

c - 用于大缓冲区的 GstAppSrc

Docker 安装/tmp/pulseaudio 给出错误