如何在 ffmpeg 中同时从两个音频源录制?

如何在 ffmpeg 中同时从两个音频源录制?

我正在 Arch Linux 上使用 ffmpeg 录制 Let's Play。我想让它同时录制游戏音频和麦克风。我使用 PulseAudio 录制声音。我可以让它录制麦克风或游戏音频,但不能同时录制。我需要输出适合 YouTube 的格式(视频:h264,音频:AAC)。

我如何才能同时录制两个源?我正在寻找一种解决方案,要么将它们合并到输出文件中的一个音轨中,要么给我两个音频输出文件和另一个程序来合并它们。

我目前的解决方法是使用 gst-launch 将所有麦克风输入发送到扬声器输出,因为这真的很分散注意力,所以将耳机的音量调低至零。

答案1

第一个选项

由于您已经可以录制游戏音频和麦克风,我会尝试将它们输出到两个文件中:

parec --format=s16le --rate=44100 -d ... | ffmpeg -ac 2 -f s16le -ar 44100  -i - mic.mp3
parec --format=s16le --rate=44100 -d ... | ffmpeg -ac 2 -f s16le -ar 44100  -i - game.mp3

然后使用 大胆将它们同步并合并为一个音频文件。

第二种选择

这里我会尝试:

首先加载一个空接收器:

pactl 加载模块 module-null-sink sink_name='foo'

然后加载两个模块循环:

pactl 加载模块模块环回

pactl 加载模块模块环回

使用 pavucontrol,将两个环回的输出连接到零接收器。将两个环回的输入连接到:alsa_output.pci-0000_00_14.2.analog-stereo.monitor 和 alsa_input.pci-0000_00_14.2.analog-stereo

这意味着您将有效地录制麦克风和声卡的输出,并在零接收器上播放这两个流。由于它是一个零接收器,您将无法听到它,但您应该能够在 pavucontrol 的播放选项卡中看到 VU 表。

然后,为了记录组合结果,您只需选择 foo.monitor。

pacat -r -d foo.monitor

相关内容