我有一个带有两个音频卡的系统:一个scarlett 2i2,我在其中连接了两个扬声器,在 HDMI 显示器上连接了耳机。我也有可能在某个时候连接一些蓝牙耳机。
我创建了一个空接收器,在其中连接所有音频应用程序,并且我想自动将此空接收器连接到我的硬件音频设备。由于系统中可能存在或不存在蓝牙耳机,我想我需要动态地执行此操作,因此我需要 Wireplumber,但我不知道如何执行此操作。
我已经添加了我的 Pipewire 图表。蓝色部分是播放一些音频的应用程序,连接到简单的效果输入。红色的是简单效果管道,连接到我的输出空接收器。白色的是硬件音频设备。这些正在从空接收器获取音频。这些是我想要自动生成的连接,因为现在我必须在启动计算机时手动连接它们(黄色,麦克风管道)。
我应该如何自动执行从空接收器到硬件设备的连接?
答案1
我最终添加了另一个答案,因为我没有真正设法用 LUA 脚本和管道配置完成任何事情...尽管如此...我设法让它工作...在~/.config/systemd/user
:
- 添加
custom.target
文件<<
[Unit]
Description=Custom Target
Requires=default.target
After=default.target
AllowIsolate=yes
- 添加
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
运行(应该在指向的
systemctl --user set-default custom.target
内部创建一个SIM链接)*您应该运行systemctl --user get-default只是为了验证default.target是否已设置....config/systemd/user/default.target
custom.target
运行
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