Aus MOV mach GIF

Nachdem Ghost zwar Unterstützung für Vimeo und Youtube bietet um Videos einzubinden, dass Hosten von selbigen lokal aber nicht direkt unterstützt (Workaround war bisher immer Upload des Videos und dann einbetten via Video Tag, aber halt nicht direkt als Feature im Post Editor) bin ich dazu übergegangen die Videos - in meinem Fall MOV Dateien - in GIFs umzuwandeln und direkt einzubetten.

In schöner Regelmässigkeit vergesse ich dem Altern entsprechend die Kommandos bzw. muss jedesmal in meinem Wiki nachsehen, von daher dachte ich es kann nicht Schadeneine kurze Anleitung für die Umwandlung von MOV nach GIF unter MacOS mal publik zu machen

Installationen

Die beiden Tools die bei der Konvertierung zum Einsatz kommen sind FFmpeg sowie ImageMagick.

FFmpeg kommt zum Einsatz, um aus dem aufgezeichneten Video einzelne PNG Files zu erzeugen, während imagemagick die Konvertierung der Bilddateien nach GIF übernimmt.

Die Installation erfolgt mittels homebrew

brew install ffmpeg

brew install imagemagick

MOV nach PNG

Im vorherigen Post Keyboards, Layouts und ich habe ich ein kurze Demovideo erstellt, in dem man sehen kann wie das Keyboardlayout via Connect/Disconnect einer externen Tastatur umgestellt wird.

Das Screenrecording erzeuge ich in der Regel mittels Quicktime (die Option findet sich unter File -> New Screen Recording)

Nachdem die Aufnahme abgeschlossen und gespeichert ist zerlege ich die MOV Datei in eine Reihe von PNG-Bildern. Hierzu kommt ffmpeg zum Einsatz


mkdir ffoutput

 ffmpeg -i Screen\ Recording\ 2020-12-19\ at\ 23.38.50.mov -vf scale=320:240  ffoutput/ScreenRecording%3d.png

Die einzelnen Parameter kurz erläutert

  • 'ScreenRecording.mov' ist unsere aufgezeichnete MOV Datei
  • 'scale=320:240' gibt die Skalierung der Ausgabe-Bilddateien an
  • 'ffoutput/ScreenRecording%3d.png' erzeugt eine Reihe von PNG Files in dem Verzeichnis ffoutput

PNG nach GIF

Im nächsten Schritt fügen wir die einzelnen Bilddateien dann zu einem animierten GIF mittels des Programms convert (imagemagick) zusammen

convert -delay 8 ffoutput/ScreenRecording*.png ffoutput/ScreenRecording.gif
  • '-delay 8 ' bei Angabe eines Delay von 8 erhält man 12.5 Frames per Second ( FPS=100/8=12.5)
  • 'ffoutput/ScreenRecording*.png' spezifiziert die Eingabefiles, welche zu einem GIF zusammengefügt werden sollen
  • 'ffoutput/ScreenRecording.gif' gibt die zu erzeugende GIF Ausgabedatei an

Et voila wir haben ein animiertes GIF.

Weitere Details zu den zahlreichen Optionen die ffmpeg und imagemagick bieten finden sich in den offiziellen Dokus unter https://ffmpeg.org/ffmpeg.html bzw. https://imagemagick.org/script/convert.php