PulseAudio 모듈은 systemd 또는 xsession에서 시작할 때 올바르게 구성되지 않았지만 터미널에서 시작할 때는 제대로 작동합니다.

PulseAudio 모듈은 systemd 또는 xsession에서 시작할 때 올바르게 구성되지 않았지만 터미널에서 시작할 때는 제대로 작동합니다.

가상 수신기에서 직접 ".monitor"를 가져올 수 없는 거의 모든 응용 프로그램에서 허용되는 마이크를 가질 수 있도록 몇 가지 가상 소스를 만들려고 합니다.

기본적으로 제가 만들 계획은 다음과 같습니다.

For System Audio recording :
Any Application Audio -> PulseEffects(apps) -> A_SINK -> alsa-card......

A virtual mic so I can pass an output as a input :
FFMPEG -> MIC_IN -> MIC_OUT

Combined 
A_SINK ==========\
                  |=> Mixed -> Mixed_OUT
MIC_OUT =========/

지금까지는 매우 좋았습니다. 몇 가지 테스트를 거친 후 다음과 같은 결과를 얻었습니다.

For System Audio recording :
Application -> module-null-sink("TIRTAGT_SINK") -> module-loopback("alsa_output.pci.analog-stereo")



For virtual mic :
FFMPEG -> module-null-sink("TIRTAGT_MIC_IN") -> module-remap-source(master="TIRTAGT_MIC_IN.monitor", source_name="TIRTAGT_MIC_OUT")



For Combined Mic and System Audio :
module-loopback(source="TIRTAGT_SINK.monitor") =====\
                                                     |==> module-null-sink("TIRTAGT_Mixed")
module-loopback(source="TIRTAGT_MIC_OUT") ==========/                  ||
                                                                       \/
module-remap-source(master="TIRTAGT_Mixed.monitor" source_name="TIRTAGT_Mixed_OUT")


/home/matthewtirta/.config/pulse/default.pa모든 것이 잘 작동했기 때문에 파일 끝에 다음 줄을 추가하도록 수정했습니다 .

### Import addon for additional configuration
.nofail
.include /home/matthewtirta/.config/pulse/presets

그리고 해당 명령을 디렉토리에 넣었습니다 /home/matthewtirta/.config/pulse/presets.

  • 시스템 오디오 녹음(00-TIRTAGT_SINK.pa):
load-module module-null-sink sink_name='TIRTAGT_SINK' sink_properties=device.description='TIRTAGT_SINK'

load-module module-loopback source="TIRTAGT_SINK.monitor" sink="alsa_output.pci-0000_05_00.6.analog-stereo" latency_msec=25

set-default-sink TIRTAGT_SINK
  • 가상 마이크의 경우:
load-module module-null-sink sink_name="TIRTAGT_MIC_IN" sink_properties=device.description='TIRTAGT_MIC_IN'

load-module module-remap-source master="TIRTAGT_MIC_IN.monitor" source_name="TIRTAGT_MIC_OUT" source_properties=device.description='TIRTAGT_MIC_OUT'

set-default-source TIRTAGT_MIC_OUT
  • 결합된 마이크 및 시스템 오디오의 경우(02-TIRTAGT_Mixed.pa):
load-module module-null-sink sink_name="TIRTAGT_Mixed" sink_properties=device.description='TIRTAGT_Mixed'

load-module module-loopback source="TIRTAGT_SINK.monitor" sink="TIRTAGT_Mixed" latency_msec=25
load-module module-loopback source="TIRTAGT_MIC_OUT" sink="TIRTAGT_Mixed" latency_msec=25

load-module module-remap-source master="TIRTAGT_Mixed.monitor" source_name="TIRTAGT_Mixed_OUT" source_properties=device.description='TIRTAGT_Mixed_OUT'

pulseaudio -k테스트를 위해 일반 사용자로 실행하여 pulseaudio 서버를 중지했습니다. 이 시점에서 pulseaudio는 관리되는 systemd에 의해 중지되었다가 다시 시작됩니다 pulseaudio.socket. 그런 다음 실행하면 pavucontrol다음과 같은 결과가 나타납니다.

Pavucontrol 재생 탭

Pavucontrol 녹음 탭

Pavucontrol 출력 장치

Pavucontrol 입력 장치

load module 명령이 구성한 내용이 잘못된 것 같습니다.

그러나 나는 결과를 보는 데 너무 관심이 있었기 때문에 pavucontrol이 루프백과 리맵이 예상한 방향을 가리키지 않는 것으로 나타났음에도 불구하고 어쨌든 테스트를 시작했습니다.

이 경험은 매우 실망스러웠습니다. 이제 가상 마이크 출력(TIRTAGT_MIC_OUT)이 내 스피커에서 들립니다. 이는 어떻게든 TIRTAGT_SINK로 루핑/리디렉션되고 있음을 의미합니다... 그런 다음 다시 살펴보니 pavucontrol실제로 TIRTAGT_SINK로 리디렉션된 것 같습니다.

마이크를 스피커에 연결해야 하는 이유는 무엇입니까?

그래서 재부팅을 다시 시도해보고 싶었습니다 pulseaudio -k. 그 시점에서 systemd는 즉시 pulseaudio 서버를 다시 시작했습니다.

불행히도 같은 결과입니다.

그래서 이번에는... systemctl --user stop pulseaudio.socket pulseaudio.service. Pulseaudio가 작동을 멈춘 것 같습니다. 그러나 실행되고 있지 않은지 확인하기 위해 다른 하나를 실행 pulseaudio -k한 다음 수동으로 시작했습니다 pulseaudio -D.

이제 아래와 같이 Pulseaudio가 다시 실행됩니다 pavucontrol. 여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

*평판이 10 미만인 사람은 최대 8개의 링크를 가질 수 있기 때문에 탭 2개를 생략했지만 이는 systemd 시나리오와 완전히 동일합니다.

루프백과 재매핑이 제 눈에는 정확해 보였기 때문에 다시 테스트하기로 결정했고 예상한 대로 정확하게 작동했습니다. 이제 FFMPEG를 실행하고 수신기를 가리키면서 데스크톱 오디오를 녹음할 수 있습니다 TIRTAGT_MIC_IN.

스크린 레코더 캡처 TIRTAGT_Mixed_OUT, 모든 것이 잘 작동합니다!

pulseaudio -D &그래서 나는 systemd를 비활성화된 상태로 유지하고 세션 로그인 시 pulseaudio를 시작하기 위해 내 파일을 넣자고 생각했습니다 ~/.xsession.

그런 다음 컴퓨터를 종료했다가 다시 시작했고 상단 패널의 xfce4-pulseaudio-plugin을 보면 pulseaudio가 온라인 상태였으므로 다시 테스트를 시작했습니다!

놀랍게도 이제 터미널에서 시작할 때 했던 작업 대신 systemd가 펄스 오디오를 시작하는 것처럼 모든 것이 엉망이 되었습니다.

여기서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 도움을 주시면 대단히 감사하겠습니다!

글쎄, pulseaudio -D &세션이 시작될 때마다 실제로 명령을 입력할 수 있지만 실제로 가능하다면 수동으로 입력하지 않는 것이 좋습니다.

관련 정보