imágenes de tubería ffmpeg extraídas del video

8

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?

Birjolaxew
fuente
Prueba-f png - | ...
Gyan
@Mulvya Esto da como resultado un error con [NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument.
Birjolaxew
2
Tratar -f image2pipe -vcodec png - | .... PNG puede no funcionar, si es así, la salida será MJPEG después de eliminar vcodec.
Gyan
@Mulvya Eso sí que funcionó. Muchas gracias :)
Birjolaxew

Respuestas:

7

¡sí hay!

agregue el argumento -f image2pipey especifique el nombre de archivo de salida como un solo himno ( -, en este contexto significa stdout), y especifique el nombre de archivo de entrada también como un solo himno ( -i -, en este contexto significa stdin) y especifique explícitamente el formato de salida (por ejemplo, para png :) -c:v png, aquí hay un ejemplo completo:

ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -
Hanshenrik
fuente