PulseAudio를 사용하여 여러 응용 프로그램의 오디오를 병렬로 별도의 파일로 스트리밍

PulseAudio를 사용하여 여러 응용 프로그램의 오디오를 병렬로 별도의 파일로 스트리밍

Ubuntu에서 여러 응용 프로그램의 오디오 출력을 여러 파일로 병렬로 리디렉션하고 싶습니다. 예를 들어, 백그라운드에서 동시에 두 개의 Chrome 인스턴스가 실행 중인 경우 해당 오디오 출력을 두 개의 개별 파일로 리디렉션할 수 있도록 하고 싶습니다.이것한 번에 하나의 인스턴스를 기록할 수 있었기 때문에 대답을 듣고 가까워졌습니다(인스턴스 A라고 부름). 그러나 두 번째 인스턴스(인스턴스 B)에서 녹음을 시작하면 두 번째 인스턴스가 해당 오디오 스트림과 첫 번째 인스턴스의 오디오 스트림을 모두 가져오는 것 같습니다. 결과는 두 개의 오디오 파일이지만 instance_a_output.ogg인스턴스 B를 시작한 명령을 실행하는 시점에 파일이 음소거됩니다. 또한 instance_b_output.oggA 및 B 스트림의 오디오도 있습니다.

내 문제는 "파일에 재생 응용 프로그램 연결" 섹션에서 언급한 "기본 수신기 입력"일 수 있다고 생각합니다.이것웹사이트.

내 래퍼 함수는 다음과 같습니다(위에서 언급한 답변과 동일).

#!/bin/bash

# Example invocation:
# ./wrapper.sh output_name mpg123 example.mp3

my_sink_name="sink-$(date +%s)"
module=`pactl load-module module-null-sink sink_name=$my_sink_name`
parec -d $my_sink_name.monitor | oggenc -Q -b 192 -o ~/audio/$1.ogg --raw - &
pid=$!
(export PULSE_SINK=$my_sink_name; ${@:2})
pactl unload-module $module
kill $pid

완성도를 높이기 위해 래퍼를 호출하는 데 사용하는 Python 스크립트가 있지만 문제가 존재하지 않는 것 같습니다.

import subprocess
import time

command1 = ["/home/myname/audio/wrapper.sh", "test{}".format(1), "mpg123", "-q", "example.mp3"]
command2 = ["/home/myname/audio/wrapper.sh", "test{}".format(2), "mpg123", "-q", "example.mp3"]

subprocess.Popen(command1)
time.sleep(3)
subprocess.Popen(command2)

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

관련 정보