Transmissão contínua de um pipe vazio e, em seguida, adição de dados ao pipe on demand

0

Essencialmente, o que eu gostaria de fazer é ter o ffmpeg transmitindo continuamente para um servidor RTMP usando um pipe vazio, então quando eu quiser transmitir algo, adicionar dados ao pipe.

Minhas razões para isso são: estou direcionando vídeos de uma fonte externa. Sempre que o vídeo terminar, o ffmpeg falha porque não está recebendo dados e eu tenho que abri-lo novamente.

Isso é possível? Se não, há outra maneira de contornar isso?

Meu comando atual é:

ffmpeg -i pipe:0 -re -c copy -f flv rtmp://mystream.com/key

pipe:0 é uma instância de ytdl .

    
por Ben Fortune 14.04.2015 / 11:09

1 resposta

2

A maneira como eu passei por isso foi usar meu próprio servidor RTMP para transmitir o vídeo para o host.

Eu canalizo meu vídeo para o servidor RTMP local usando

mkfifo x
ytdl http://youtube.com/watch?v=12345 > x
ffmpeg -re -i x -c copy -f flv rtmp://mylocalRTMPserver/stream

Em seguida, crie um fluxo a partir dele para o host usando

ffmpeg -re -i rtmp://mylocalRTMPserver/stream -c copy -f flv rtmp://mystream.com/key

Se o fluxo acima não receber nenhuma entrada, ele permanecerá aberto por cerca de 30 segundos, permitindo que eu feche o tubo do youtube e o abra novamente.

Embora isso funcione, há uma sobrecarga extra de ter que executar duas instâncias do ffmpeg.

    
por 16.04.2015 / 17:42

Tags