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.
fonte
~/.asoundrc
. Talvez você possa evitar isso de alguma forma.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.Respostas:
Umm, olhando a documentação do pulseaudio.
man pulseaudio
Temos as seguintes variáveis de ambiente
Esperamos que isso permita que você complete a substituição do coletor pulseaudio e, se isso não for suficiente, execute nosso próprio servidor pulseaudio de uso único.
Referindo-se a esta página ( /ubuntu/60837/record-a-programs-output-with-pulseaudio ), descobrimos o comando
parec
/pacat
(eles são aliases) que pode gravar e gravar em pias e córregos.Juntando isso, temos o seguinte wrapper (que na verdade eu não executei - embora eu tenha conseguido que esse método funcione de maneira ad-hoc)
fonte