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?
-f png - | ...
[NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument
.-f image2pipe -vcodec png - | ...
. PNG peut ne pas fonctionner, dans ce cas, la sortie sera MJPEG après la suppression de vcodec.Réponses:
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 signifiestdout
), et spécifiez le nom du fichier d'entrée également comme un seul hypen (-i -
, dans ce contexte, cela signifiestdin
) et spécifiez explicitement le format de sortie (par exemple pour png :)-c:v png
, voici un exemple complet:la source