在空接收器和音频设备之间创建管道连接

在空接收器和音频设备之间创建管道连接

我有一个带有两个音频卡的系统:一个scarlett 2i2,我在其中连接了两个扬声器,在 HDMI 显示器上连接了耳机。我也有可能在某个时候连接一些蓝牙耳机。

我创建了一个空接收器,在其中连接所有音频应用程序,并且我想自动将此空接收器连接到我的硬件音频设备。由于系统中可能存在或不存在蓝牙耳机,我想我需要动态地执行此操作,因此我需要 Wireplumber,但我不知道如何执行此操作。

我已经添加了我的 Pipewire 图表。蓝色部分是播放一些音频的应用程序,连接到简单的效果输入。红色的是简单效果管道,连接到我的输出空接收器。白色的是硬件音频设备。这些正在从空接收器获取音频。这些是我想要自动生成的连接,因为现在我必须在启动计算机时手动连接它们(黄色,麦克风管道)。

在此输入图像描述

我应该如何自动执行从空接收器到硬件设备的连接?

答案1

我最终添加了另一个答案,因为我没有真正设法用 LUA 脚本和管道配置完成任何事情...尽管如此...我设法让它工作...在~/.config/systemd/user

  1. 添加custom.target文件<<
[Unit]
Description=Custom Target
Requires=default.target
After=default.target
AllowIsolate=yes
  1. 添加custom.service<<
[Unit]
Description=Custom Service
After=default.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/script #(i did ln -s, don't know about /path/to/script)
[Install]
WantedBy=custom.target
  1. 运行(应该在指向的systemctl --user set-default custom.target内部创建一个SIM链接)*您应该运行systemctl --user get-default只是为了验证default.target是否已设置....config/systemd/user/default.targetcustom.target

  2. 运行systemctl --user enable custom.service应该创建一个 sim-link 到custom.target.wants

[编辑] 我发布了我的 shell 脚本,以更好地说明该过程

#!/bin/sh

#Static Names
APPLDUALSINK=sink.Dual_Apple_Inc._Display_Audio.analog-stereo
APPLDUAL_L=alsa_output.usb-Apple_Inc._Display_Audio_27711502-00.analog-stereo
APPLDUAL_R=alsa_output.usb-Apple_Inc._Display_Audio_27711702-00.analog-stereo

function __link () {
        #link monitor left to playback left
        /usr/bin/pw-link $APPLDUALSINK:monitor_FL $APPLDUAL_L:playback_FL
        #link monitor left to playback right
        /usr/bin/pw-link $APPLDUALSINK:monitor_FL $APPLDUAL_L:playback_FR
        #link monitor right to playback left
        /usr/bin/pw-link $APPLDUALSINK:monitor_FR $APPLDUAL_R:playback_FL
        #link monitor right to playback right
        /usr/bin/pw-link $APPLDUALSINK:monitor_FR $APPLDUAL_R:playback_FR
}

#wait for pipewire sink
sleep 5

__link

相关内容