Convertir une vidéo OGV en animation GIF?

40

J'ai créé des vidéos OGV avec le gtk-recordmydesktopprogramme de screencasting, en essayant de résoudre ce problème ici avec bruteforce over X. Je peux voir les vidéos avec VLC.

Maintenant, la tâche consiste à trouver des moyens de convertir des vidéos OGV en animations GIF afin que je puisse les afficher sur SE. Comment puis je faire ça?

Matthias Braun
la source

Réponses:

38

jetez un oeil à ceci: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... Une fois que Desktop Recorder a sauvegardé l'enregistrement dans une vidéo OGV , MPlayer sera utilisé pour capturer des captures d'écran JPEG , en les enregistrant dans le répertoire "sortie" .

Sur un terminal:

mplayer -ao null <video file name> -vo jpeg:outdir=output

Utilisez ImageMagick pour convertir les captures d'écran en gifs animés.

convert output/* output.gif

vous pouvez optimiser les captures d'écran de cette façon:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
la source
1
Pour un grand nombre d'images, j'ai dû ajouter -limit map 1pour convertir (obtenu un "Killed" sinon).
Ax3l
Avec une vidéo ogv de 30 secondes, la commande convert a pris tout mon cpu et durait plus de 10 minutes avant que je ne l’arrête. l'ajout -limit map 1à la commande n'a pas résolu le problème.
max pleaner
1
Essayez ceci pour convertir ffmpeg -i output/00000%03d.jpg output.gif unix.stackexchange.com/questions/24014/…
Dawid Drozd le
Il convert output/* -fuzz 10% -layers Optimize optimised.gifconvient de mentionner que le traitement direct est également possible et sensiblement plus rapide que le chemin à deux commandes. En outre, mplayercrée facilement des pngcaptures d'écran, qui peuvent être préférées pour les captures de sites Web ou d'interfaces graphiques.
Raphaël
21

Script simple de bonne qualité

Scénario:

inputFile=$1

FPS=15
WIDTH=320

#Generate palette for better quality
ffmpeg -i $inputFile -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen tmp_palette.png

#Generate gif using palette
ffmpeg -i $inputFile -i tmp_palette.png -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

rm tmp_palette.png

Code de: https://superuser.com/a/556031/295664

Sans palette: (231 KB)

entrez la description de l'image ici

Avec palette: (573 KB)

entrez la description de l'image ici

Dawid Drozd
la source
4

Ce one-liner travaille pour moi:

ffmpeg -i video.ogv video.gif
Luator
la source
2
Est-ce essentiellement différent des réponses existantes qui utilisent ffmpeg? Comment?
Ilkkachu
1
@ilkkachu Je cherchais une solution très rapide, simple et facile à retenir. Les autres réponses sont beaucoup plus compliquées et difficiles à comprendre au premier abord (ce qui entraîne probablement des résultats de meilleure qualité).
Luator
2
ifile=~/test.ogv

echo '# Determine input WxH and FPS' 
eval "$(ffmpeg -i "$ifile" 2>&1 |sed -nr 's/.*Stream.*Video.* ([0-9]+x[0-9]+),.*[^[0-9.]([0-9.]+).*tbr,.*/WxH=\1;FPS=\2/p')"

echo '# Output multiple images from the input video'
ffmpeg -i "$ifile" -r $FPS -s $WxH -f image2 -vframes 100 -y ~/test-%03d.jpg 2>/dev/null

echo '# use ImageMagic "convert" to generate the animated .gif' 
convert -delay 20 ~/test-[0-9][0-9][0-9].jpg  ~/test.gif 

echo '# remove temp image files'    
rm -f  ~/test-[0-9][0-9][0-9].jpg

echo 'Done!'
Peter.O
la source
1
Suggérez de convertir en PNG, pas en JPEG, mais en plus grand, mais en réduisant les artefacts de recompression.
ideasman42