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?

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

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


4

Dieser Einzeiler arbeitet für mich:

ffmpeg -i video.ogv video.gif

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

1
Schlagen Sie vor, in PNG zu konvertieren, nicht in JPEG. Größer, aber weniger Neukomprimierungsartefakte.
ideasman42
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.