web-dev-qa-db-fra.com

Comment extraire la 1ère image et restaurer en image avec ffmpeg?

Quelqu'un connaît l'astuce?

Et comment installer ffmpeg? yum install mpeg ne renvoie que ceci:

======================================================================================== Matched: mpeg ========================================================================================
libiec61883.i386 : Streaming library for IEEE1394
libiec61883.x86_64 : Streaming library for IEEE1394
qffmpeg-devel.i386 : Development package for qffmpeg
qffmpeg-devel.x86_64 : Development package for qffmpeg
qffmpeg-libs.i386 : Libraries for qffmpeg
qffmpeg-libs.x86_64 : Libraries for qffmpeg
36
lex

C'est sur la page de manuel:

 * Vous pouvez extraire des images d'une vidéo ou créer une vidéo à partir de nombreuses images 
: 
 
 Pour extraire des images d'une vidéo: 
 
 ffmpeg -i foo.avi -r 1 -s LxH -f image2 foo-% 03d.jpeg 
 
 Ceci extraira une image vidéo par seconde de la vidéo et 
 les afficher dans des fichiers nommés foo-001.jpeg, foo-002.jpeg, etc. Les images 
 seront redimensionnées pour correspondre aux nouvelles valeurs WxH. 
 
 Si vous souhaitez extraire un nombre limité de trames seulement, vous pouvez utiliser 
 la commande ci-dessus en combinaison avec l'option -vframes ou -t, ou en combinaison avec 
 avec -ss pour commencer l'extraction à partir d'un certain point à l'heure.

Mais bien sûr, vous devez d'abord l'installer. Je suis sur Debian et n'utilise pas miam.

[mise à jour pour l'autre question]


i=1
for avi in *.avi; do
 ffmpeg -i $avi -vframes 1 -f image2 /tmp/$i.jpg; i=$((i+1))
done

Testé et fonctionne.

[mise à jour pour encore une autre question ...]


for flv in *.flv; do
 ffmpeg -i $flv -vframes 1 -f image2 ${flv%%.flv}.jpg
done
57
jcomeau_ictx

J'ai bricolé cette ligne de commande à partir de diverses réponses qui me convient parfaitement pour extraire la première image d'une vidéo. Je l'utilise pour enregistrer une miniature de capture d'écran pour la vidéo.

ffmpeg -i inputfile.mkv -vf "select=eq(n\,0)" -q:v 3 output_image.jpg

Explication:

La filtre de sélection-vf "select=eq(n\,0)" permet de sélectionner uniquement l'image # 0.

-q:v Vous permet de régler la qualité du jpeg de sortie entre 1 et 31. Baissez le nombre, augmentez la qualité. 2 - 5 fonctionne bien, j'utilise 3.

Remarque : Cela vous donnera une image de la même taille que la vidéo. Pour obtenir une vignette, vous pouvez utiliser le filtre d'échelle pour obtenir une vignette adaptée à la largeur dont vous avez besoin, comme suit:

ffmpeg -i inputfile.mkv -vf "select=eq(n\,0)" -vf scale=320:-2 -q:v 3 output_image.jpg

La commande ci-dessus vous donnera un jpeg miniature qui sera mis à l'échelle à match largeur de 320, et la hauteur sera calculée pour correspondre au rapport d'aspect.

38
Dhiraj Gupta

Une solution facile à utiliser qui fonctionne pour moi est

ffmpeg -i <input> -vframes 1 <output>.jpeg

Notez que j'obtiens une erreur "[swscaler @ 0x111652000] format de pixel obsolète utilisé, assurez-vous que vous avez défini la plage correctement" mais selon une petite lecture (voir par exemple https://stackoverflow.com/a/ 43038480/1241736 ) qui peut être ignoré en toute sécurité.

6
henry