스트리밍 목적으로 영구적인 추가 오디오 싱크/소스를 설정하시겠습니까?

스트리밍 목적으로 영구적인 추가 오디오 싱크/소스를 설정하시겠습니까?

저는 이 작업을 약 한 달 동안 진행해 왔으며 프로세스를 최적화/자동화하기 위해 다양한 방법을 시도해 보았습니다. 기본적으로 다음과 같은 일을 할 수 있기를 바랍니다.음성 측정기(windows), Linux에서는 (아치).

현재 해결 방법은 시작 시 다음 pactl 명령을 실행하는 것입니다.

    { path = "pactl"        args = "load-module module-null-sink sink_name=Virtual1" }
    { path = "pactl"        args = "load-module module-null-sink sink_name=Virtual2" }
    { path = "pactl"        args = "load-module module-loopback sink=Virtual1" }
    { path = "pactl"        args = "load-module module-loopback sink=Virtual1" }
    { path = "pactl"        args = "load-module module-loopback sink=Virtual1" }

다음으로 수동으로 경로를 재설정합니다.특정 채널Pav 제어에서. 그러나 때때로(특히 정지 후) 라우팅이 완전히 무작위로 재설정되므로 pavucontrol로 돌아가서 필요한 변경을 수행해야 합니다(특히 재생 탭에서). 루프백 모듈의 로딩 순서도 때때로 엉망이 되어 시스템을 켤 때마다 수행해야 하는 수동 작업의 혼란을 더욱 가중시켰습니다.

내 요구 사항은 마이크와 애플리케이션 오디오를 결합한 다음 마이크를 통해 전송하는 것입니다(예: 디스코드).

싱크와 소스가 부팅할 때마다 재설정되거나 매번 재할당되지 않도록 하는 방법이 있나요? 아니면 채널이 내가 원하는 위치로 정확히 이동하도록 채널을 다시 라우팅하는 프로세스를 자동화하는 방법이 있을까요(적어도 가상 스트림의 경우)?

답변1

나도 비슷한 문제에 직면했습니다. 로그인 시 이러한 수신자를 설정하는 스크립트가 있지만 실제로 행을 저장하는 것은 아직 이와 같은 도구에서 구현되지 않은 것 같습니다 helvum. Wikipedia에서는 이를 처리할 수 있는 몇 가지 스크립트를 제공합니다. pw-savewires

#!/bin/bash

if [[ "$#" -ne 1 ]]; then
    echo
    echo 'usage: pw-savewires filename'
    echo
    exit 0
fi

rm $1 &> /dev/null
while IFS= read -r line; do
    link_on=`echo $line | cut -f 4 -d '"'`
    link_op=`echo $line | cut -f 6 -d '"'`
    link_in=`echo $line | cut -f 8 -d '"'`
    link_ip=`echo $line | cut -f 10 -d '"'`
    echo "Saving: " "'"$link_on:$link_op"','"$link_in:$link_ip"'"
    echo "'"$link_on:$link_op"','"$link_in:$link_ip"'" >> $1
done < <(pw-cli dump short link)

매개변수 파일 이름이 주어지면 현재 배선을 읽고 이를 파일에 저장합니다 pw-savewires foo.foo

pw-restore라는 또 다른 스크립트를 사용하여 다음 줄을 복원할 수 있습니다. pw-loadwires

#!/bin/python

import sys
import csv
import os

if len(sys.argv) < 2:
    print('\n usage: pw-loadwires filename\n')
    quit()

with open(sys.argv[1], newline='') as csvfile:
    pwwreader = csv.reader(csvfile, delimiter=',', quotechar='"')
    for row in pwwreader:
        print('Loading:  ' + row[0] + ' --> ' + row[1])
        process = os.popen('pw-link ' + row[0] + ' ' + row[1])

따라서 pw-loadwires foo파일에 저장된 라인 구성을 복원해야 합니다 foo. 도움이 되었기를 바랍니다.

답변2

특히 불일치의 경우 설정하려는 노력을 기울이고 싶다면 화면 공유에서 앱 오디오를 완전히 활성화할 수 있습니다. 다음은 github의 가이드입니다. https://github.com/edisonnano/Screenshare-with-audio-on-Discord-with-Linux 보다 일반적인 질문에 대해서는 답변을 받고 싶습니다. 현재 설정에서 Pipewire를 사용하고 있다면 helvum이 GUI 패치 패널로 유용할 수 있습니다. 내 친구는 한동안 qjackctl을 GUI 패치베이로 사용했는데, 이 패치베이에서도 구성을 저장하고 로드했지만 jack을 파이프라인에 대한 인터페이스로 사용했습니다.

관련 정보