
У меня есть два приложения, запущенных через 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 запомнит источники/приемники по умолчанию для этих приложений, пока они активны, и автоматически подключит их при повторном запуске.