Redirecionar o áudio de um processo específico para um dispositivo de áudio específico ou até mesmo um canal

4

Como posso redirecionar o áudio gerado por um processo (ou por um grupo de processos conhecendo o ID do processo pai) para o PulseAudio e depois para um hardware de áudio específico (ou mesmo para um canal específico)?

Qual deve ser a configuração mínima do PulseAudio?

Eu tenho um script Python gerando sinusoid e quero redirecionar esse som para o meu subwoofer apenas (eu tenho sistema de áudio 5.1) por exemplo. Eu quero capturar todos os sons gerados por esse processo apenas.

    
por valioiv 30.01.2017 / 21:14

1 resposta

2

São várias perguntas. : -)

1a) Em geral, aplicativos que produzem som para o Pulseaudio se identificam com o servidor Pulseaudio por algum nome e, identificando-os com esse nome, você pode redirecionar o fluxo de áudio para pias de hardware específicas.

1b) Se seus processos produzirem som escrevendo em algum formato para stdout ou similar, você pode canalizá-lo para paplay e processá-lo como se fosse um aplicativo Pulseaudio. Use a opção -n para fornecer um nome de cliente específico ao seu processo (como paplay -n "sinusoid generator" ).

1c) Se seus processos produzirem som usando o ALSA, escolha pulse como dispositivo padrão no seu .asoundrc :

pcm.!default pulse
ctl.!default pulse

Isso adicionará uma camada de compatibilidade e encaminhará o som para o Pulseaudio, onde ele aparecerá novamente como um aplicativo com um nome específico.

1d) Se seus processos produzem som de uma maneira diferente, você precisa nos dizer mais detalhes.

2a) Você pode redirecionar a saída de som Pulseaudio de um aplicativo para um coletor específico usando a pavucontrol GUI. A configuração padrão do Pulseaudio inclui um módulo que lembra quais aplicativos usam os que se afundam e restaura essas atribuições automaticamente quando o aplicativo é iniciado na próxima vez. Então você precisa fazer isso apenas uma vez.

2b) Você também faz isso a partir da linha de comando, usando pacmd move-sink-input , depois de usar outro pacmd junto com grep para obter os nomes necessários. Apenas usar a GUI é mais simples.

3a) Você só pode mover fluxos de áudio completos, não canais. No entanto, você pode reproduzir vários fluxos ao mesmo tempo em um coletor, portanto, se o seu gerador sinusoid produzir áudio 5.1 com o sinusoid apenas nos canais do subwoofer, é onde ele tocará e você poderá reproduzir outros sons no sistema de áudio 5.1 tempo.

3b) Se você estiver usando paplay (s.a.), você pode usar --channels e --channel-map para garantir que sua sinusóide seja reproduzida no canal do subwoofer. Veja man paplay para detalhes.

3c) Se nenhuma das alternativas acima funcionar para você, você pode criar um coletor extra (virtual) sobre o dissipador de hardware e remapear os canais (por exemplo, entrada de coletor mono único - > saída do canal do subwoofer).

4) A configuração padrão do Pulseaudio usada pela maioria das distros deve ser suficiente. Tornando-o mais minimalista identificando e removendo módulos e pacotes que não serão usados é possível, mas um pouco de trabalho (e, claro, depende da sua distribuição).

    
por 31.01.2017 / 11:43