Canalizar dois FIFOs de áudio simultaneamente, onde um pode não ter dados, mas tem prioridade, em uma única saída FIFO

Canalizar dois FIFOs de áudio simultaneamente, onde um pode não ter dados, mas tem prioridade, em uma única saída FIFO

eu tenho uminstantâneoservidor de áudio, que está configurado para ter três fluxos de áudio (fifos):música,transmissão, esaída. Meus alto-falantes reproduzem o áudio dosaídastream, e meus players de música canalizam a entrada para omúsicafluxo. Posso canalizar a música com sucesso para a saída para ouvi-la nos alto-falantes com o comando:cat /tmp/music > /tmp/output

Agora quero implementar um recurso de "substituição" onde a entrada dotransmissãofluxo causa osaídaparaem vez dereproduzir o (alerta) dotransmissão, ignorando temporariamente o fluxo demúsicaaté a transmissão terminar. Porém, na maioria das vezes/tmp/transmissãoestá vazio e não tem entrada. Mesmo uma simples tentativa de espiar o conteúdo dd bs=1 count=1 if=/tmp/broadcasttrava o terminal até que haja dados disponíveis na transmissão. Portanto, minhas tentativas de fazer coisas comomesclar fluxosnão teve sucesso.

eu olhei paraffmpege pulseaudio, mas não consegue descobrir se tal "substituição seletiva" é possível. Ffmpeg parece aindatem bugs com entrada multi-fifo. A solução ideal também "soaria bem", ou seja, talvez fizesse um fade de 1/4 de segundo entre os streams à medida que a transmissão assumisse o controle.

editarCorrendo Ubuntu Desktop 18.04. Opa!

informação relacionada