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?

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

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


4

Ce one-liner travaille pour moi:

ffmpeg -i video.ogv video.gif

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!'

1
Suggérez de convertir en PNG, pas en JPEG, mais en plus grand, mais en réduisant les artefacts de recompression.
ideasman42
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.