Como codifico o FLV para um arquivo temporário e, em seguida, reproduzo para stdout com FFMpeg?

0

Eu sei que o ffmpeg suporta a canalização. Eu estou tentando alcançar o que foi descrito em esta resposta citada abaixo

If you are willing to accept a solution that does not truly stream the resulting frames, but does still adhere to your specification (read FLV from URL resource, output MP4 to stdout), you can always try to first encode the FLV to a temporary file and then output that to stdout.

Será que eu conseguiria isso com o ffmpeg por meio de um canal com algo assim?

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4 | -
    
por nadermx 06.01.2016 / 02:54

1 resposta

0

Você está quase lá. Você já conseguiu codificar seu arquivo de entrada para um arquivo MP4 chamado temp.mp4 :

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4

Para ler o arquivo resultante para stdout, uma vez totalmente escrito, você pode usar cat :

cat temp.mp4

Para combinar os dois, use o operador && (o que faz com que o segundo comando seja executado apenas quando o primeiro comando for bem-sucedido):

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4 && cat temp.mp4

Você pode, então, canalizar a saída desse comando para qualquer programa que desejar.

Observe que, em geral, esse padrão (por exemplo, ler um arquivo com cat unicamente para canalizá-lo para outro programa) é desaprovado quando o outro programa tem suporte nativo para a leitura do respectivo arquivo. Passe temp.mp4 como um arquivo de entrada para o programa consumidor sempre que possível.

    
por 13.01.2016 / 16:01