673 votes

Comment convertir une vidéo en GIF en utilisant ffmpeg, avec une qualité raisonnable ?

Je suis en train de convertir une vidéo en fichier GIF avec ffmpeg :

ffmpeg -i input.flv -ss 00:00:00.000 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif

Il fonctionne très bien, mais le fichier gif de sortie est de très mauvaise qualité.

Avez-vous une idée de la façon dont je peux améliorer la qualité du gif converti ?

5 votes

Excellent billet des ingénieurs de giphy engineering.giphy.com/how-to-make-gifs-with-ffmpeg

6voto

Grodriguez Points 242

Comment ajouter une entrée de menu contextuel "clic droit" dans Windows 7/10 pour convertir votre fichier vidéo en gif

D'autres réponses ont mentionné le vidéo2gif script, que j'ai utilisé. Mais, vous pouvez utiliser n'importe quel script.

Pour créer l'option de menu contextuel, vous devez modifier votre registre. Ouvrez une invite de commande powershell, avec des privilèges d'administrateur. Exécutez ces commandes :

$key = "Registry::HKEY_CLASSES_ROOT\`*\shell\Run Video2Gif"
New-Item -Path $key"\Command" -Value "C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\bin\video2gif.bat `"%1`"" -Force

Maintenant, lorsque vous faites un clic droit sur un fichier, vous aurez une option "Exécuter Video2Gif" !

btw j'ai installé ffmpeg à C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\ et mettre le video2gif.bat script dans le répertoire bin juste à côté de ffmpeg.exe . J'ai également ajouté C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\bin à mon Windows PATH mais je ne pense pas que vous en ayez besoin.

Si vous voulez avoir l'option de pouvoir fournir quelques drapeaux / args de ligne de commande supplémentaires au script, alors faites un nouveau fichier nommé video2gif-prompt.bat et faire en sorte que le registre y fasse référence au lieu de video2gif.bat :

@echo off
set /p inp=Enter extrta args, if desired:
C:\dev\ffmpeg\ffmpeg-3.4.2-win64-static\bin\video2gif.bat %* %inp%

Vous pouvez toujours appuyer sur la touche Entrée pour obtenir rapidement les valeurs par défaut.

4voto

Sun Points 5974

Voici le fichier batch pour les utilisateurs de Windows :

gifenc.bat :

set start_time=0
set duration=60
set palette="c:\temp\palette.png"
set filters="fps=15,scale=-1:-1:flags=lanczos"
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -vf "%filters%,palettegen" -y %palette%
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse" -y %2

Source : GIF de haute qualité avec FFmpeg : Extraction d'un échantillon seulement

Si vous souhaitez utiliser une seule variable d'entrée et que le nom de la sortie ne comporte que l'extension GIF (prononcez JIF), utilisez plutôt ceci :

set start_time=0
set duration=60
set palette="c:\temp\palette.png"
set filters="fps=15,scale=-1:-1:flags=lanczos"
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -vf "%filters%,palettegen" -y %palette%
set var1=%1
set var2=%var1:~0,-4%
ffmpeg -v warning -ss %start_time% -t %duration% -i %1 -i %palette% -lavfi "%filters% [x]; [x][1:v] paletteuse" -y %var2%.gif

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X