
Eu tenho dois aplicativos em execução via padsp
. Como posso (espero que em tempo de execução) garantir que a saída do primeiro seja registrada pelo segundo?
Responder1
Primeiro, ao iniciar os aplicativos OSS, dê nomes a eles e aos fluxos para facilitar sua identificação:
padsp -n oss_play -m oss_output your/playback/app
padsp -n oss_rec -m oss_input your/recording/app
Para canalizar a saída de um aplicativo para outro, usaremos um coletor nulo e o monitor associado. Carregue-o na linha de comando:
pacmd load-module module-null-sink sink_name=oss_pipe sink_properties=device.description=OSS-Pipe
Agora você pode usar pavucontrol
para definir a saída deoss_playparaTubo OSS, e a entrada deoss_recparaMonitor de OSS-Pipeusando a GUI. Ou você pode usar novamente a linha de comando para identificar o número de índice dos fluxos com
pacmd list-sink-inputs
pacmd list-source-outputs
A saída não é particularmente fácil de analisar, mas se você quiser usar um script,grepfunciona (para "oss_play", da mesma forma para "oss_rec"):
sgrep '"index: "__"\n" in ("index" .. ("index" or end) containing "application.name = \"oss_play\"")'
Digamos que os índices sejam 3 e 17, respectivamente. Finalmente, mova-os:
pacmd move-sink-input 3 oss_pipe
pacmd move-sink-output 17 oss_pipe.monitor
Se module-stream-restore
estiver carregado (padrão), o pulseaudio lembrará as fontes/sumidouros padrão para esses aplicativos enquanto estiver ativo e os conectará automaticamente quando você os iniciar novamente.