Gostaria de redirecionar a saída de áudio de um programa para arquivo, na linha de comando, como em
$ redirect-wrapper file.wav my-program
de modo a
- Não ouço a saída do programa, ou seja, a saída deve ir apenas para o arquivo
- Não gravo nada além do programa, ou seja, apenas este programa específico é redirecionado para o arquivo
- o restante do sistema de áudio é deixado completamente imperturbável, nenhuma opção de configuração é alterada para frente e para trás ou algo assim
Existe uma maneira de fazer isso? Esta questão relacionada não ajuda, preciso de uma solução de linha de comando, não "clique lá, depois lá". Esta é, provavelmente, também relacionado, mas também depende da pavucontrol aplicação gráfica. Encontrei uma alternativa terminal ao pavucontrol, pacmd.
Mas isso ainda apenas possibilita o seguinte compromisso:
- Obtenha o coletor padrão e salve o que era. Quão? Provavelmente grepping através
pacmd list-sinks
- Defina coletor padrão como coletor snd-aloop com
pacmd set-default-sink
. - Grave daquela pia.
- Iniciar aplicativo
- Aguarde até o aplicativo abrir sua entrada do coletor:
pacmd list-sink-inputs | grep name-of-my-program
se encontrar alguma coisa, a entrada está aberta. - Mude o padrão de volta para o que era
pacmd set-default-sink
. - Pare a gravação assim que o aplicativo fechar.
Mas isso ainda altera o coletor padrão por um período de tempo de até alguns minutos (a entrada do coletor normalmente não é aberta até que o programa esteja realmente reproduzindo sons que não precisam estar logo após o lançamento). Eu implementei esse compromisso; Github .
Ainda procurando respostas não comprometedoras.
pacmd list
mostra quais fontes e sumidouros estão anexados a programas específicos, portanto pode haver uma maneira de alterá-los. Tente perguntar na lista do pulseaudio em lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss Os mantenedores / desenvolvedores estão lá e são bastante úteis.
~/.asoundrc
. Talvez você possa evitar isso de alguma forma.