Puedo usar el siguiente comando para extraer imágenes de un video usando ffmpeg y guardarlas en el sistema de archivos:
... | ffmpeg -i - -f image2 'img-%03d.png'
Me gustaría canalizar estas imágenes a otra aplicación, en lugar de guardarlas en el sistema de archivos; la forma en que se separan en la tubería es de poca importancia, ya que será un script NodeJS el que yo mismo controle.
Lo siguiente no funciona:
... | ffmpeg -i - -f image2 pipe: | ...
Error con
[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
¿Hay alguna forma de canalizar imágenes extraídas de un video usando ffmpeg, sin usar el sistema de archivos?
-f png - | ...
[NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument
.-f image2pipe -vcodec png - | ...
. PNG puede no funcionar, si es así, la salida será MJPEG después de eliminar vcodec.Respuestas:
¡sí hay!
agregue el argumento
-f image2pipe
y especifique el nombre de archivo de salida como un solo himno (-
, en este contexto significastdout
), y especifique el nombre de archivo de entrada también como un solo himno (-i -
, en este contexto significastdin
) y especifique explícitamente el formato de salida (por ejemplo, para png :)-c:v png
, aquí hay un ejemplo completo:fuente