Posso usar o seguinte comando para extrair imagens de um vídeo usando ffmpeg, salvando-as no sistema de arquivos:
... | ffmpeg -i - -f image2 'img-%03d.png'
Gostaria de canalizar essas imagens para outro aplicativo, em vez de salvá-las no sistema de arquivos - como elas são separadas no canal é de pouca importância, pois será um script do NodeJS que eu me controle.
O seguinte não funciona:
... | ffmpeg -i - -f image2 pipe: | ...
Erro com
[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument
Existe alguma maneira de canalizar as imagens extraídas de um vídeo usando o ffmpeg, sem usar o sistema de arquivos?
-f png - | ...
[NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument
.-f image2pipe -vcodec png - | ...
. PNG pode não funcionar, se o resultado for MJPEG após a remoção do vcodec.Respostas:
sim existe!
inclua o argumento
-f image2pipe
e especifique o nome do arquivo de saída como um único hífen (-
neste contexto significastdout
) e especifique o nome do arquivo de entrada também como um único hífen (-i -
neste contexto significastdin
) e especifique explicitamente o formato de saída (por exemplo, para png :-c:v png
), aqui está um exemplo completo:fonte