使用pactl
,我得到以下接收器:
pactl list sinks short
# 0 alsa_output.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
由于只有一个接收器,我希望它是默认接收器,因此以下命令将具有相同的行为:
ffmpeg -f pulse -i 0 -c:a flac "$HOME/audio.flac"
ffmpeg -f pulse -i default -c:a flac "$HOME/audio.flac"
但是,第一个从播放的媒体复制音频(它是从源录制的吗?),而后者使用内置麦克风录制从扬声器捕获的音频。
最重要的是,虽然看起来更像第一个选项,但使用alsa的以下命令的行为类似于第二个选项(来自内置麦克风的记录):
ffmpeg -f alsa -i hw:0 -c:a flac "$HOME/audio.flac"
我的目标是了解如何区分这些输入以及何时使用 alsa 或脉冲来记录播放的媒体音频和 pactl 列出的任何其他接收器(即内置或外部麦克风)。
我知道很可能需要特定于设备的配置,并希望获得指导,而不是一个通用的解决方案。
pactl list sinks short
当你真正应该做的时候,你正在做pactl list sources short
。这样做时,
ffmpeg -f pulse -i
您指定的是source,而不是 sink。我系统上的第一个 (
0
) 脉冲源是alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
您的音频输出的监视器(因此它会准确记录正在播放的内容)。我系统上的第二个 (1
) 源是内置笔记本电脑麦克风。试试这两个命令:
应该是一样的。(
pactl list sources short
尽管仔细检查)。