OGV-Video in GIF-Animation konvertieren?

40

Ich habe OGV-Videos mit dem gtk-recordmydesktopScreencasting-Programm erstellt und versucht, dieses Problem hier mit Bruteforce over X zu lösen. Ich kann die Videos mit VLC anzeigen.

Jetzt besteht die Aufgabe darin, einige Möglichkeiten zu finden, um OGV-Videos in GIF-Animationen zu konvertieren, damit ich sie auf SE anzeigen kann. Wie kann ich das machen?

Matthias Braun
quelle

Antworten:

38

Schauen Sie sich dies an: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735

..... Nachdem der Desktop Recorder die Aufnahme in einem OGV- Video gespeichert hat , wird MPlayer zum Aufnehmen von JPEG- Screenshots verwendet, die im Ausgabeverzeichnis gespeichert werden .

Auf einem Terminal:

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

Verwenden Sie ImageMagick , um die Screenshots in animierte Gifs zu konvertieren.

convert output/* output.gif

Sie können die Screenshots folgendermaßen optimieren:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
quelle
1
Für eine große Anzahl von Bildern musste ich -limit map 1zum Konvertieren hinzufügen (bekam sonst einen "Killed").
Ax3l
Bei einem 30-Sekunden-OGV-Video hat der Befehl convert meine gesamte CPU-Kapazität beansprucht und dauerte über 10 Minuten, bevor ich ihn stoppte. Hinzufügen -limit map 1zum Befehl hat es nicht behoben.
Max Pleaner
1
Versuchen Sie dies für die Konvertierung von ffmpeg -i output/00000%03d.jpg output.gif unix.stackexchange.com/questions/24014/…
Dawid Drozd
Es ist zu erwähnen, dass auch direkt convert output/* -fuzz 10% -layers Optimize optimised.gifmöglich und deutlich schneller als der Pfad mit zwei Befehlen ist. Erstellt auch mplayerproblemlos pngScreenshots, die für das Erfassen von Websites oder GUIs bevorzugt werden können.
Raphael
21

Einfaches Skript mit guter Qualität

Skript:

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 von: https://superuser.com/a/556031/295664

Ohne Palette: (231 KB)

Bildbeschreibung hier eingeben

Mit Palette: (573 KB)

Bildbeschreibung hier eingeben

Dawid Drozd
quelle
4

Dieser Einzeiler arbeitet für mich:

ffmpeg -i video.ogv video.gif
luator
quelle
2
Unterscheidet sich dies wesentlich von den vorhandenen Antworten, die verwendet werden ffmpeg? Wie?
ilkkachu
1
@ilkkachu Ich suchte nach einer sehr schnellen, einfachen und leicht zu merkenden Lösung. Die anderen Antworten sind viel komplizierter und auf den ersten Blick nicht so einfach zu verstehen (was jedoch wahrscheinlich zu qualitativ besseren Ergebnissen führt).
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
quelle
1
Schlagen Sie vor, in PNG zu konvertieren, nicht in JPEG. Größer, aber weniger Neukomprimierungsartefakte.
ideasman42