images de pipe ffmpeg extraites de la vidéo

8

Je peux utiliser la commande suivante pour extraire des images d'une vidéo à l'aide de ffmpeg, en les enregistrant dans le système de fichiers:

... | ffmpeg -i - -f image2 'img-%03d.png'

Je voudrais diriger ces images vers une autre application, plutôt que de les enregistrer dans le système de fichiers - la façon dont elles sont séparées dans le tuyau est de peu d'importance, car ce sera un script NodeJS que je contrôlerai moi-même.

Ce qui suit ne fonctionne pas:

... | ffmpeg -i - -f image2 pipe: | ...

Se tromper avec

[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-t-il un moyen de diriger des images extraites d'une vidéo à l'aide de ffmpeg, sans utiliser le système de fichiers?

Birjolaxew
la source
Essayez-f png - | ...
Gyan
@Mulvya Cela entraîne une erreur avec [NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument.
Birjolaxew
2
Essayez -f image2pipe -vcodec png - | .... PNG peut ne pas fonctionner, dans ce cas, la sortie sera MJPEG après la suppression de vcodec.
Gyan
@Mulvya Cela a bien fonctionné. Merci beaucoup :)
Birjolaxew

Réponses:

7

Oui il y a!

ajoutez l'argument -f image2pipe, et spécifiez le nom du fichier de sortie comme un seul hypen ( -, dans ce contexte, cela signifie stdout), et spécifiez le nom du fichier d'entrée également comme un seul hypen ( -i -, dans ce contexte, cela signifie stdin) et spécifiez explicitement le format de sortie (par exemple pour png :) -c:v png, voici un exemple complet:

ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -
hanshenrik
la source