Как подключить определенные клиенты PulseAudio

Как подключить определенные клиенты PulseAudio

У меня есть два приложения, запущенных через padsp. Как я могу (надеюсь, во время выполнения) убедиться, что вывод первого приложения записан вторым?

решение1

Во-первых, при запуске OSS-приложений дайте им и потокам имена, чтобы их было легче идентифицировать:

padsp -n oss_play -m oss_output your/playback/app
padsp -n oss_rec  -m oss_input  your/recording/app

Для передачи вывода из одного приложения в другое мы будем использовать null-sink и связанный с ним монитор. Загрузите его из командной строки:

pacmd load-module module-null-sink sink_name=oss_pipe sink_properties=device.description=OSS-Pipe

Теперь вы можете использовать pavucontrolдля установки выходных данныхoss_playкOSS-труба, и вводoss_recкМонитор OSS-Pipeиспользуя GUI. Или вы можете снова использовать командную строку, чтобы определить индексный номер потоков с помощью

pacmd list-sink-inputs
pacmd list-source-outputs

Вывод не очень удобен для анализа, но если вы хотите использовать скрипт,sgrepделает свое дело (для "oss_play", аналогично для "oss_rec"):

sgrep '"index: "__"\n" in ("index" .. ("index" or end)  containing "application.name = \"oss_play\"")'

Допустим, индексы равны 3 и 17 соответственно. Наконец, переместите их:

pacmd move-sink-input 3 oss_pipe
pacmd move-sink-output 17 oss_pipe.monitor

Если module-stream-restoreзагружено (по умолчанию), PulseAudio запомнит источники/приемники по умолчанию для этих приложений, пока они активны, и автоматически подключит их при повторном запуске.

Связанный контент