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