Executando 'tail -F $ file' e removendo as linhas geradas

0

Longa história curta; Estou executando este comando para transmitir um arquivo de áudio em constante crescimento audio.mpg into ffmpeg

tail -F audio.mp3 | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm

audio.mp3 está sendo SSH de outro servidor que possui um dispositivo de captura que alimenta os dados. Isso está funcionando corretamente, no entanto o audio.mp3 está em constante crescimento, e tudo que preciso é enviar os dados mp3 finais para ffmpeg para codificar e enviá-los para ffserver na mesma máquina.

Existe um comando que eu posso executar para a saída tail -F e também remover os dados enviados de audio.mp3 .

Em essência, quero colocar um limite de 1 MB no tamanho do arquivo de audio.mp3

Obrigado antecipadamente

    
por Moe 15.10.2013 / 14:49

1 resposta

1

Parece um problema de "pipe nomeado" (Sherlock Holmes, por favor, me perdoe). Como os dados não devem permanecer no seu sistema, você deve criar um pipe nomeado,

 mkfifo my_pipe

e depois gravar o processo SSH, e você pode ler a partir dele:

cat < my_pipe | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm

Quando o processo que grava dados for concluído, um EOF aparecerá no gato, e você estará livre para parar o envio por meio de Ctrl + C. É claro que você também pode ser mais inteligente, escrevendo um pequeno script que aguarda em um EOF; contanto que não o encontre, ele passa os dados, quando encontra o EOF, desliga a operação. Desta forma, você não precisa monitorar todo o processo.

    
por 15.10.2013 / 16:00