가상 마이크에 대한 라우팅 애플리케이션(pulseaudio)

가상 마이크에 대한 라우팅 애플리케이션(pulseaudio)

내 쪽에서 애플리케이션을 들을 수 있으면서도 내 애플리케이션의 오디오를 가상 마이크로 라우팅하려고 합니다. 그렇다면 어떻게 할 수 있습니까?

답변1

PulseAudio에는 오디오가 있습니다출처(소리가 나오는 곳, 예: 마이크)싱크대(예: 스피커로 연결되는 곳)원천, 오디오를 재생하는 애플리케이션은싱크대. 불행하게도 애플리케이션의 출력(a싱크 입력)은 소스로 간주되지 않으며 녹음할 수 없지만 이를 해결할 수 있는 방법이 있습니다.

매우 간단한 구성에서는 "모니터 소스"를 사용하여 현재 듣고 있는 모든 것을 녹음할 수 있습니다. 모든 PulseAudio 싱크에는 pactl list short sources이 싱크의 이름(이름은 으로 끝남 .monitor) 을 찾기 위해 실행할 수 있습니다. PulseAudio를 사용하는 다른 녹음 프로그램 이 parec --record --device $SOURCE있는 경우 녹음이 시작된 후 pavucontrolGUI를 사용하여 탭에서 소스를 변경할 수 있습니다.Recording

특정 애플리케이션만 녹음하려는 경우에는 좀 더 까다로워집니다. PulseAudio에는 이를 지원하는 몇 가지 관련 모듈이 module-null-sink있습니다 module-combine-sink.

  • 널 싱크 모듈은 아무 것도 연결되지 않은 싱크를 생성합니다. 애플리케이션 출력을 연결하면 그 자체로는 그다지 유용하지 않지만 모든 싱크와 마찬가지로 이제 녹음할 수 있는 모니터 소스가 있습니다. , 여기에 애플리케이션을 연결하면 이미 격리 녹음을 할 수 있지만 더 이상 직접 들을 수는 없습니다.
  • 결합 싱크 모듈은 수신한 모든 입력을 두 개의 다른 싱크로 전달하는 새로운 싱크를 생성합니다. 새 결합 싱크로 보내는 것이 두 싱크로 보내는 것과 같다는 점에서 이름이 약간 혼란스럽습니다. 해당 시나리오에서는 사운드 카드와 널 싱크를 결합하고 애플리케이션 출력을 새 결합 싱크에 연결합니다.

다음과 같이 이러한 싱크를 만들 수 있습니다( pactl list short sinks결합 싱크에서 사용할 싱크 이름을 찾는 데 사용).

pactl load-module module-null-sink sink_name=nullsink
pactl load-module module-combine-sink sink_name=combine slaves=nullsink,alsa_output.pci-0000_00_1b.0.analog-stereo

이제 에 설명된 대로 연결을 변경하여 pavucontrol결합 싱크("동시 출력...")로 재생하도록 애플리케이션을 설정하고 널 싱크에서 녹음하도록 레코더를 설정하는 작업이 포함됩니다( "널 출력").

CLI 를 사용하여 이러한 연결을 설정하는 것도 pactl가능하지만 좀 더 복잡할 수 있습니다.

관련 정보