如何在 PulseAudio 中将源中的端口拆分为单独的源?

如何在 PulseAudio 中将源中的端口拆分为单独的源?

pactl list sources显示有一个源有多个端口:

Ports:
    analog-input-front-mic: Front Microphone (priority: 8500, not available)
    analog-input-rear-mic: Rear Microphone (priority: 8200, available)
    analog-input-linein: Line In (priority: 8100, available)

我想将这些端口分成单独的源,以便我可以使用以下命令环回并将它们混合在一起以在单个接收器中输出:

pactl load-module module-loopback source=whatever sink=whatever

除非我错过了一些东西,否则似乎module-remap-source无法完成我所寻求的事情。

如果没有单独的源,我只能使用pavucontrol接口手动切换端口,该接口一次只允许一个端口对给定源处于活动状态。

使用 LXDE 运行 Debian Stretch。

使用 XFCE4 在 Windows 7 和 Debian Jessie 中可以轻松实现相同的设置,其中 GUIxfce4-mixer为每个输入显示单独的音频滑块,我所要做的就是打开线路输入和后置麦克风滑块来听到它们在默认输出上混合(在这种情况下,是我的耳机)。

这是以下结果cat /proc/asound/pcm

00-00: ALC887-VD Analog : ALC887-VD Analog : playback 1 : capture 1
00-02: ALC887-VD Alt Analog : ALC887-VD Alt Analog : capture 1
01-03: HDMI 0 : HDMI 0 : playback 1
01-07: HDMI 1 : HDMI 1 : playback 1
01-08: HDMI 2 : HDMI 2 : playback 1
02-00: USB Audio : USB Audio : playback 1 : capture 1

这是以下结果cat /proc/asound/card*/codec\#*

https://pastebin.com/yusn4hJP

更新:

此后,我通过直接在 Alsa 之上进行清除pulseaudiopavucontrol完全使用qasmixer(使用Loopback Mixing和启用)来避免这个问题。Show device selection与现在已经过时的产品相比,这即使不是更大程度的多功能性也是相同的xfce4-mixer。其他我不太喜欢但仍然值得尝试的 Alsa 搅拌机是voltialsamixergui

即使这解决了我的问题,但这并不是这个问题的完整答案,特别是这个问题也涉及将 Pulseaudio 端口分割成独立源的可能性以及如何分割。

答案1

您只有两个 A/D 转换器(音频输入节点),ALSA 称为“ALC887-VD Analog”和“ALC887-VD Alt Analog”。因此,在软件方面您可以实现的最佳效果是两个源,您必须手动切换两个源的端口(就像您现在为单个源所做的那样)。不过,设置起来并不简单,您必须摆弄 中的配置文件和路径/usr/share/pulseaudio/alsa-mixer/profile-sets/,并手动卸载和加载 Pulseaudio 模块。我在我的系统上尝试过它,但仍然没有得到令人满意的配置。

但是,如果您的目标是“我想将硬件音频输入环回到硬件音频输出(耳机)”而不是“我想要多个 Pulseaudio 源,这样我可以在 Pulseaudio 中环回到任何接收器”,您可以只使用硬件混音器(这可能就是您在 Windows 7 和 xfce4-mixer 中所做的)。

因此,使用alsamixeramixer或类似的程序来控制硬件环回设置,它应该像以前一样工作。

答案2

我想,我已经找到了你的问题的解决方案这里。想法如下:

  1. 获取可用 ALSA 声卡和输入的列表:

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 1: Generic [HD-Audio Generic], device 0: ALC887-VD Analog [ALC887-VD Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    card 1: Generic [HD-Audio Generic], device 2: ALC887-VD Alt Analog [ALC887-VD Alt Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    

    并注意卡和设备号(在上面的示例中,有card 1和两个输入设备:device 0device 2)。

  2. 如果您没有每用户 PulseAudio 配置文件,请复制一份:

    cp /etc/pulse/default.pa ~/.config/pulse/default.pa 并使用简单的文本编辑器打开您的副本。找到与静态设备配置相关的部分,并为 ALSA 设备添加以下行:

    ### Load audio drivers statically
    ### (it's probably better to not load these drivers manually, but instead
    ### use module-udev-detect -- see below -- for doing this automatically)
    #load-module module-alsa-sink
    #load-module module-alsa-source device=hw:1,0
    #load-module module-oss device="/dev/dsp" sink_name=output source_name=input
    #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
    #load-module module-null-sink
    #load-module module-pipe-sink
    
    load-module module-alsa-sink device=hw:1,0 name="ALSAOutput"
    load-module module-alsa-source device=hw:1,0 name="ALSASource1" source_properties=device.description="ALSASource1"
    load-module module-alsa-source device=hw:1,2 name="ALSASource2" source_properties=device.description="ALSASource2"
    
    
    ### Automatically load driver modules depending on the hardware available
    #.ifexists module-udev-detect.so
    #load-module module-udev-detect
    #.else
    ### Use the static hardware detection module (for systems that lack udev support)
    #load-module module-detect
    #.endif
    

    device=hw:1,0在这些行中,您必须根据您的配置编辑参数。这里第一个数字是卡片数字,第二个是设备编号,您必须记住上一步中的编号。

    请注意,您还必须注释掉有关使用 udev 自动加载驱动程序的下一节。

  3. 为您的用户重新启动 PulseAudio:

    $ systemctl --user restart pulseaudio
    

完成后,pavucontrol您将看到一个输出设备和两个独立的输入设备:

在此输入图像描述

在此输入图像描述

请注意,输入设备的名称pavucontrol是我们在上面的配置文件中分配给它们的名称(参数source_properties=device.description="ALSASource1")。这是为设备分配独特名称的便捷方法。

  1. 接下来,为了能够使用这些输入,您必须为每个 ALSA 输入实际分配正确的声源。为此,我建议您alsamixer在控制台中启动,按 F6 选择声卡,然后按 F4 切换到“捕获”选项卡并分配必要的输入,如下所示:

在此输入图像描述

在我的示例中,我选择Line in作为第一个输入,并Front Mic作为第二个输入。

您还应该确保这两个捕获设备未静音。要打开它们,只需使用向左/向右箭头键切换到CaptureCapture 1控件并按空格键即可。你会看到红色的字'捕获' 当设备处于

所以此时你有两个端口单个设备分成两个独立的设备pavucontrol在 PulseAudio 中,接下来您可以像往常一样自由地使用它们做任何您想做的事情。例如,要连接来自这两个源的信号,您可以使用这个食谱

要恢复所有这些更改,您可以编辑回~/.config/pulse/default.pa文件,注释掉新行并取消注释旧行。或者您可以直接删除该文件。然后,再次重新启动 PulseAudio。

PS 我相信必须有一种更智能的方法来做到这一点(例如,通过为 PulseAudio 创建自定义设备配置文件),但我对此并不熟悉。也许这里的其他人可以给出提示。

相关内容