如何使用 PulseAudio 将音频设备连接到环回设备?

如何使用 PulseAudio 将音频设备连接到环回设备?

我有一台连接到 Focusrite Scarlett 2i2 USB 音频接口的数码钢琴。该接口和 Logitech USB 网络摄像头均连接到我的计算机。我想将 Scarlett 和网络摄像头麦克风的声音合并到一个 null-sink 中,并使用其显示器作为 Skype 中的“麦克风”进行远程钢琴课程。然后老师可以听到我的讲话以及直接来自 Scarlett 的音乐(而不是通过空中录制)。

到目前为止我这样做:

pactl load-module module-null-sink sink_name=piano_lesson
pactl load-module module-loopback sink=piano_lesson
pactl load-module module-loopback sink=piano_lesson

所以现在我必须环回进入空接收器。然后我打开 pavucontrol GUI,并在录音选项卡上将 Scarlett 分配给第一个环回,将网络摄像头麦克风分配给第二个环回。这有效。然而,这很乏味,我已经开始编写一个脚本来自动化该过程。

但是,我很难找到将设备分配给这些环回的命令。我不确定pactl move-sink-input|move-source-output这是否是正确的命令,即使通过阅读文档和其他堆栈问题/答案,我也没有完全理解它们的目的。命令提供自动完成功能,但参数建议令人困惑或预期参数(例如麦克风)未显示。

问:如何通过命令行将 Scarlett/麦克风连接到环回设备?

我的目标:

  • 将源 #4 (alsa_input.usb-Focusrite_Scarlett_2i2_[...].analog-stereo) 连接到接收器输入 1
  • 将源 #5 (alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono [=网络摄像头]) 连接到接收器输入 2

以下是一些输出:

$ pactl list sinks short
0   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
1   alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo  module-alsa-card.c  s32le 2ch 44100Hz   SUSPENDED
2   piano_lesson    module-null-sink.c  s16le 2ch 44100Hz   RUNNING

$ pactl list sink-inputs short
0   0   1   protocol-native.c   float32le 2ch 44100Hz
1   2   -   module-loopback.c   s16le 2ch 44073Hz
2   2   -   module-loopback.c   s16le 2ch 44032Hz

$ pactl list sources short
0   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
1   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
3   alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo.monitor  module-alsa-card.c  s32le 2ch 44100Hz   SUSPENDED
4   alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo   module-alsa-card.c  s32le 2ch 44100Hz   RUNNING
5   alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono    module-alsa-card.c  s16le 1ch 16000Hz   RUNNING
6   piano_lesson.monitor    module-null-sink.c  s16le 2ch 44100Hz   IDLE

$ pactl list source-outputs short
7   4   -   module-loopback.c   s16le 2ch 44100Hz
9   5   -   module-loopback.c   s16le 2ch 44100Hz

笔记: 我也对非 PulseAudio 解决方案持开放态度,无论它是脚本还是基于 GUI 的工具,我都可以在其中加载此类配置(例如从配置文件)。

答案1

您可以设置环回设备的源。

pactl load-module module-loopback source=alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y8GCE759613412-00.analog-stereo sink=piano_lesson
pactl load-module module-loopback source=alsa_input.usb-046d_09a1_C5BDCE20-02.analog-mono sink=piano_lesson

相关内容