두 개의 오디오 카드가 있는 시스템이 있습니다. Scarlett 2i2에는 두 개의 스피커가 연결되어 있고 헤드폰은 HDMI 모니터에 연결되어 있습니다. 언젠가 블루투스 헤드폰을 연결할 기회도 있습니다.
모든 오디오 애플리케이션을 연결하는 빈 수신기를 만들었고 이 빈 수신기를 하드웨어 오디오 장치에 자동으로 연결하려고 합니다. 블루투스 헤드셋이 시스템에 있을 수도 있고 없을 수도 있기 때문에 동적으로 해야 할 것 같아서 Wireplumber가 필요한데 어떻게 해야 할지 모르겠습니다.
Pipewire 차트를 추가했습니다. 파란색 부분은 간단한 효과 입력에 연결된 오디오를 재생하는 애플리케이션입니다. 빨간색은 출력 널 수신기에 연결된 간단한 효과 파이프입니다. 흰색은 하드웨어 오디오 장치입니다. Null 수신기에서 오디오를 가져옵니다. 이제 컴퓨터를 시작할 때 수동으로 연결해야 하기 때문에 자동으로 생성되기를 원하는 연결입니다(노란색, 마이크 파이프).
Null 수신기에서 하드웨어 장치로의 연결을 어떻게 자동화해야 합니까?
답변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
실행(내부에 SIM 링크를 생성해야 함
systemctl --user set-default custom.target
) * default.target이 설정되었는지 확인하려면 systemctl --user get-default를 실행해야 합니다..config/systemd/user/default.target
custom.target
실행하면
systemctl --user enable custom.service
다음에 대한 SIM 링크가 생성되어야 합니다.custom.target.wants
[편집] 프로세스를 더 잘 설명하기 위해 쉘 스크립트를 게시했습니다.
#!/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