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