如何在 Pulseaudio 中混合两个输入源(用于使用 SimpleScreenRecorder 录制麦克风和扬声器)

如何在 Pulseaudio 中混合两个输入源(用于使用 SimpleScreenRecorder 录制麦克风和扬声器)

我碰巧在 Linux 上使用 SimpleScreenRecorder (SSR) 录制会议。

我使用 Pulseaudio 和默认配置。

当SSR录制屏幕和音频时,它会记录扬声器的输出,但不会记录我的麦克风。我知道我可以使用创建一个环回,pactl load-module module-loopback latency_msec=1以便麦克风连接到扬声器,并且 SSR 可以录制两者,但是在不使用耳机时会产生反馈和拉森效应。

显然我不能要求 SSR 同时从两个音频源录制。有没有办法创建一个虚拟 Pulseaudio 源,扬声器和麦克风都在其中,以便我可以指示 SSR 从该虚拟源进行录制?

当我读到将应用程序和麦克风混合到一个输入中,我可以创建一个虚拟扬声器,可以将麦克风和扬声器路由到该虚拟扬声器,并且 SSR 可以从中读取内容。但是,我仍然希望麦克风和扬声器在开会时能够正常工作,并且我不确定该解决方案是否可以做到这一点,因此我需要具有 Pulseaudio 经验的人员。

如果我找不到简单的方法,我会从 SSR 切换到 OBS...

答案1

如果您想同时录制麦克风和扬声器输出,请创建虚拟扬声器和两个环回模块:一个将麦克风镜像到虚拟扬声器,第二个将镜像您的扬声器。然后只需选择录制ssr内该虚拟扬声器的监听即可。

命令:

pactl load-module module-null-sink sink_name=both sink_properties=device.description=Both-mic-and-speakers
pactl load-module module-loopback source=alsa_output.pci-0000_00_1f.3.analog-stereo.monitor sink=both
pactl load-module module-loopback sink=both

只需确保替换alsa_output.pci-0000_00_1f.3.analog-stereo为您的扬声器的名称,您就可以使用pactl list sinks short.

然而,该解决方案有缺点:

  • 它记录所有应用程序的声音
  • 您的系统音量会影响录音的音量(因此,如果您将音量设置为 20%,录音会非常安静),请将其与受麦克风音量影响的您的声音(可能是 100%)进行比较
  • 如果不使用耳机录音会有回声

您可以通过使用更复杂的脚本(我用它来记录单个应用程序)来缓解前两个问题:

pactl load-module module-null-sink sink_name=fake_speakers sink_properties=device.description=Virtual-speakers
pactl load-module module-remap-source source_name=fake_mic master=fake_speakers.monitor source_properties=device.description=Virtual-mic
pactl load-module module-null-sink sink_name=fake_speakers2 sink_properties=device.description=Second-virtual-speakers
pactl load-module module-loopback source_dont_move=true sink_dont_move=true sink=fake_speakers2 source=fake_speakers.monitor
pactl load-module module-loopback sink_dont_move=true sink=fake_speakers2
pactl load-module module-remap-source source_name=fake_mic2 master=fake_speakers2.monitor source_properties=device.description=Second-virtual-mic
pactl load-module module-loopback source_dont_move=true source=fake_speakers.monitor

然后将应用程序的接收器设置为虚拟扬声器。然后将SSR音频源设置为Second-Virtual-mic。您仍然会听到应用程序的声音,但 SSR 只会录制选定的应用程序和您的声音,并且默认情况下所有内容都具有 100% 音量,并且由您控制。如果遇到声音延迟,请尝试将latency_msec参数添加到环回中。

相关内容