Question Comment créer un fichier GIF animé à partir d'une vidéo MP4 via une ligne de commande?


Je veux faire une animation .gif d'un .mp4 vidéo. Je préférerais le faire à partir de la ligne de commande, alors s'il vous plaît ne listez que les outils de ligne de commande.


76
2017-07-15 08:01


origine




Réponses:


Deux étapes:

  • Extraire des images de la vidéo

    Créez un répertoire appelé frames dans le même répertoire que votre .mp4 fichier. Utilisez la commande:

    ffmpeg -i video.mp4  -r 5 'frames/frame-%03d.jpg'
    


     

    -r 5 stands for FPS value
        for better quality choose bigger number
        adjust the value with the -delay in 2nd step
        to keep the same animation speed
    
    %03d gives sequential filename number in decimal form
    

    la source

  • Convertir des images en gif

    cd frames
    convert -delay 20 -loop 0 *.jpg myimage.gif
    


    -delay 20 means the time between each frame is 0.2 seconds
       which match 5 fps above.
       When choosing this value
           1 = 100 fps
           2 = 50 fps
           4 = 25 fps
           5 = 20 fps
           10 = 10 fps
           20 = 5 fps
           25 = 4 fps
           50 = 2 fps
           100 = 1 fps
           in general 100/delay = fps
    
    -loop 0 means repeat forever
    

    Docs: convertir les options gif

Vous allez vous retrouver avec un gros fichier, regardez le image magick guide pour optimiser gif sur les options que vous pouvez ajouter à la deuxième commande pour obtenir un fichier plus petit.


92
2017-07-15 08:01



bonne réponse - quelques informations supplémentaires: ffmpeg peut être installé en utilisant les instructions ici - chepyle
Gardez à l'esprit que le frames Le dossier doit exister pour que la première commande fonctionne. - totymedli
Pour ceux qui veulent un moyen rapide d’optimiser qui fonctionne généralement et qui sont trop paresseux pour lire le lien, ajoutez simplement -layers Optimize Jusqu'au dernier convert commande, avant *.jpg. Vérifiez la sortie cependant, il pourrait être affecté. Pour moi, cela a réduit la taille du gif de 5 Mo à 700 Ko sans perte de qualité perceptible :) - cpury
Merci, ce fut un processus intéressant, un mp4 de 5,6 Mo a fini par avoir un gif de 236 Mo, pas sûr que je vais le mettre sur mon site web;) Peut-être qu'un gif doit être limité à quelques secondes plutôt qu'à une minute. - cardamom
Au lieu d'utiliser le format de fichier JPG, avec beaucoup de pertes avec les paramètres par défaut, je vous recommande d'utiliser PNG pour l'exportation de fichier initiale. ffmpeg -i video.mp4 -r 5 'frames/frame-%03d.png'. - Pierre F


ffmpeg + convert one-liner sans fichiers intermédiaires

sudo apt-get install ffmpeg imagemagick
ffmpeg -i input.mp4 -r 10 -f image2pipe -vcodec ppm - | \
  convert -delay 5 -loop 0 - output.gif

produit la sortie rapidement et avec une taille raisonnable par rapport à celle du fichier d'entrée.

La source: https://superuser.com/a/730389/128124

Explication de certains des arguments:

Autres arguments facultatifs que vous souhaiterez probablement:

Même si vous réduisez la hauteur et le framerate, le GIF de sortie peut toujours être plus grand que la vidéo, puisque les formats vidéo "réels" non-GIF compressent les images, tandis que GIF ne compresse que les images individuelles.

Un direct:

convert input.mp4 rpi2-bare-metal-blink.gif

a fonctionné, mais a presque tué mon ordinateur en raison du débordement de mémoire, et a produit une sortie 100 fois plus grande pour mon fichier d'entrée 2s 1Mb. Peut-être qu'un jour, ImageMagick va rattraper son retard.

Testé sur Ubuntu 17.10.


65
2017-10-15 18:56



Les downvoters expliquent s'il vous plaît ;-) - Ciro Santilli 新疆改造中心 六四事件 法轮功
Votre délai ne correspond pas à votre valeur -r (le gif résultant est deux fois plus rapide). Vous avez également ajouté un argument d'échelle pour aucune raison apparente (cela rend le gif vraiment petit). - asmeurer
Je suis d'accord. Les gifs de petite taille sont meilleurs pour le web. Merci pour scale=320:-1 - zombic
Pour ceux qui se demandent: enlever -r 10 ramènera le GIF à la vitesse normale. - Mitch
J'ai un gif 20% plus gros que le mp4: O - Adam Goldman


gifify est un utilitaire basé sur un nœud tout-en-un qui simplifie la conversion. Ça dépend de nodejs, npm, ffmpeg, et imagemagick qui sont tous disponibles dans les pensions.

Une fois que tu as npm installé, vous pouvez installer gifify globalement avec:

    npm install -g gifify

Une vidéo peut être convertie en un .GIF avec:

    gifify video.mp4 -o video.gif

Vous pouvez également définir éventuellement une position de début et de fin dans la vidéo et ajouter une légende de texte:

    gifify clip.mp4 -o clip.gif --from 01:48:23.200 --to 01:48:25.300 --text 'we are the knights who say nip!'

Complete La conversion peut prendre plusieurs minutes, même avec des vidéos plus petites.

REMARQUE: ffmpeg et imagemagick peut avoir besoin d'être compilé avec certaines bibliothèques spécifiques (c'est-à-dire libass et fontconfig en conséquence).


8
2017-09-03 19:44



Ne gère pas les clips> 40 sec: github.com/vvo/gifify/issues/99 - oligofren