Como conectar clientes pulseaudio específicos

1

Eu tenho dois aplicativos em execução via padsp. Como posso (esperançosamente em tempo de execução) garantir que a saída do primeiro seja gravada pelo segundo?

viraptor
fonte

Respostas:

1

Primeiro, quando você inicia os aplicativos OSS, forneça nomes a eles e aos fluxos para facilitar a identificação deles:

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 o 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 pavucontrolpara configurar a saída de oss_play como OSS-Pipe e a entrada de oss_rec como Monitor do OSS-Pipe usando a GUI. Ou você pode novamente usar 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 adequada para análise, mas se você deseja usar um script, o sgrep faz o truque (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. Por fim, mova-os:

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

Se module-stream-restoreestiver carregado (padrão), o pulseaudio lembrará as fontes / sumidouros padrão para esses aplicativos enquanto estiverem ativos e os conectará automaticamente quando você os iniciar novamente.

dirkt
fonte
1
Sei que a resposta provavelmente é tarde demais para o OP, mas encontrei o mesmo problema e queria documentar a solução.
dirkt 3/09/16
1
muito apreciado :)
Andrew T