ImageMagick peut-il créer des miniatures à partir d'une vidéo?

11

J'essaie d'extraire des miniatures de vidéo via ImageMagick. J'ai trouvé quelques échantillons sur leur site officiel, mais ça fait du GIF, pas du PNG. Je veux une vignette solide cependant.

Peut-il créer la même sortie qu'avec cette commande ffmpeg?

ffmpeg -ss 600 -i myVideo.mp4 -vframes 1 -s 420x270 Out.bmp
Juneyoung Oh
la source

Réponses:

18

Vous pouvez extraire des miniatures de vidéos avec ImageMagick comme cela (à partir d'ici - une autre réponse affirme qu'ImageMagick utilise ffmpeg `` sous le capot '', donc je ne sais pas si cela sera réellement plus rapide que d'utiliser simplement ffmpeg):

convert input.mp4[100] thumbnail.png

le [100]dit à ImageMagick de prendre la 100ème image input.mp4. Je l'ai testé sur un flux vidéo H.264 dans un conteneur MP4. De toute évidence, vous pouvez utiliser les options ImageMagick que vous souhaitez, y compris le désentrelacement comme décrit dans votre lien.


ImageMagick est vraiment pour traiter des images individuelles, cependant; pour la vidéo, vous devez simplement utiliser ffmpeg. Évidemment, il y a un certain chevauchement ici, car vous avez affaire à une image individuelle, mais je dirais que le désentrelacement est plus une tâche de traitement vidéo.

Vous devez utiliser le filtre yadif pour le désentrelacement. Vous pouvez ainsi l'ajouter à votre ligne existante:

ffmpeg -ss 600 -i input.mp4 -vframes 1 -s 420x270 -filter:v 'yadif' output.png

lorsque je travaille avec des filtres, je préfère utiliser le filtre d'échelle plutôt que -s:

ffmpeg -ss 600 -i input.mp4 -vframes 1 -filter:v 'yadif,scale=420:270' output.png
evilsoup
la source
Peut-être que je comprends mal la question, mais l'OP a spécifiquement demandé comment réaliser ce que la ffmpegcommande fait avec ImageMagick.
Je
@slhck J'ai interprété le problème réel de l'OP comme `` obtenir des miniatures attrayantes à partir d'une vidéo entrelacée '', et j'ai supposé qu'ils essayaient simplement d'utiliser le mauvais outil pour le travail (c'est-à-dire obtenir la vignette avec ffmpeg -> désentrelacer avec ImageMagick). Si quelqu'un devait publier un moyen de le faire avec ImageMagick, cependant, il aurait mon vote positif.
evilsoup
@evilsoup merci pour votre réponse. J'ai téléchargé cette question car ffmpeg prend trop de temps pour créer une miniature à partir d'une vidéo. Et j'ai entendu quelque part si j'utilise imagemagick, je peux faire ça plus rapidement. Est-ce vrai et possible? Je l'ai également recherché, mais il n'y a aucun moyen de prendre une miniature de la vidéo avec seulement imagemagick. Désolé pour mon mauvais anglais.
Juneyoung Oh
@JuneyoungOh prendre des miniatures avec ImageMagick est en effet possible, voir la mise à jour de ma réponse. Je doute que ce soit plus rapide, car il semble (d'après mes recherches superficielles) qu'ImageMagick utilise ffmpeg comme back-end pour traiter les vidéos.
evilsoup
@evilsoup Oh Merci, je pensais que c'était impossible. Je peux maintenant vérifier ce qui est plus rapide: merci beaucoup.
Juneyoung Oh
6

ImageMagick s'exécute vers ffmpeg avec cette commande:

ffmpeg -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"

Donc, la réponse courte est "non" (car il ne le fait pas lui-même).

cnd
la source