Distribua a saída de áudio do aplicativo para vários dispositivos de reprodução

1

Eu tenho um aplicativo do qual preciso gravar áudio. Para isso, estou usando pavucontrol para definir a entrada de áudio do software de gravação para o monitor da saída de áudio. Agora meu problema é que na maioria das vezes, eu não quero ouvir a saída. Para esse propósito, criei um dispositivo de saída fictício usando modprobe snd-aloop . Isso funciona muito bem, mas às vezes eu quero ouvir o fluxo de áudio ao vivo enquanto ainda gravo. Isso significa que eu sempre tenho que alterar tanto a saída de áudio do aplicativo de som quanto a entrada de áudio do aplicativo de gravação, o que pode ficar realmente cansativo. Além disso, isso resultará no aplicativo de gravação para gravar tudo o que ouço, não apenas o aplicativo específico.

Eu encontrei esta resposta, mas não é exatamente o que eu quero desde que eu não quero a saída de som em todos os dispositivos. Apenas o loop dummy e outra saída da minha escolha. Meu sistema é o arch-linux usando o gnome3-shell. Eu não quero que isso seja permanente, então eu preciso de uma solução que eu possa mudar rapidamente.

Pergunta bônus: Eu adoraria ter um atalho que ativasse / desativasse a "escuta ao vivo" (adicionando uma segunda saída de áudio ao fluxo de áudio do aplicativo), por esse motivo um comando da CLI seria ótimo.

Para ficar bem claro, quero poder alternar entre os seguintes roteamentos de áudio:

[playback app] --> [dummy aloop] --> [monitor of aloop] --> [recording app]

e

[playback app] --> [dummy aloop] --> [monitor of aloop] --> [recording app]
               \-> [headphones] (simultanously)
    
por confetti 24.07.2018 / 01:28

1 resposta

1

Se você estiver usando o Pulseaudio, dê uma olhada nos módulos do Pulseaudio , em particular, module-loopback e module-null-sink . Na minha experiência, snd-aloop é um pouco difícil de usar e, como o Pulseaudio lida principalmente com o fluxo de som, é muito mais fácil no Pulseaudio.

Portanto, se o caso de uso for "saída de registro de um aplicativo em segundo plano, use altifalantes nesse meio tempo para outras coisas, ocasionalmente ouça o aplicativo", criaria um coletor nulo chamado apropriadamente, conecte o aplicativo a com pavucontrol (isso será lembrado por Pulseaudio), grave da fonte monitor deste coletor (novamente, isso será lembrado, se necessário com opções de linha de comando para o aplicativo de gravação para definir o nome do aplicativo para Pulseaudio) . Quando você quiser ouvir, faça uma conexão de loopback da fonte do monitor para o coletor do alto-falante. Ou torne esse loopback permanente e mude / mude o som conforme necessário.

Você pode usar pacmd ou pactl para tentar tudo isso na linha de comando. Com os mesmos comandos, você também pode criar scripts em seus atalhos. Torne-a permanente usando os scripts de inicialização do Pulseaudio.

Então, algo nos moldes de

pactl load-module module-null-sink sink_name=recsink
pactl load-module module-loopback source=recsink.monitor sink=your_loadspeaker_sink

Use pactl list short sinks para ver seus nomes de coletor. pactl help e pacmd help para mais comandos.

    
por 24.07.2018 / 08:31