CYBERHOLIC

Blogging and Design since 1999

Wednesday, 23 November 2016 13:50

ffmpeg code für Remember The .GIF

Ich hab jetzt endlich das bereits vor ein paar Monaten begonnene Batch-Script für das automatisiert generieren von "remember the .GIF" Videos beendet. Es ist schon unglaublich was mit ffmpeg mittlerweilse über die DOS Ebene möglich aber bevor ich da näher drauf eingehe, hier der gesamte Script:

for %%A IN (*.gif) do ffmpeg -ignore_loop 0 -i "%%A" -s 1920x1080 -pix_fmt yuv420p -r 25 -t 5 "tempo\%%A".mp4

(for %%i in (tempo\*.mp4) do @echo file '%%i') > list.txt
ffmpeg -f concat -i list.txt -i music.mp3 -c copy output.mp4
del list.txt
del tempo\*.mp4

ffmpeg -i output.mp4 -i watermark-qrcode.png -filter_complex "overlay=main_w-overlay_w-30:30" output1.mp4


SET mTit=Magic - Digital brain RMX
SET mArtist=Alexis Storm
SET mLabel=Sostanze Records
SET mDomain=WWW.SOSTANZERECORDS.IT

SET mTitFS=60
SET mArtistFS=40
SET infoFS=25
SET fontPathBold=fonts/Oswald-Bold.ttf
SET fontPath=fonts/Oswald-Regular.ttf
SET fontColor=white

REM ffmpeg -i output1.mp4 -vf drawtext="fontfile=%fontPath%: text='Hello There, overlaid':fontsize=120:fontcolor=white:x=30:y=800" output2.mp4
ffmpeg -i output1.mp4 -vf "[in]drawtext=enable='between(t,0,8)':fontfile=%fontPathBold%: text='%mTit%':fontsize=%mTitFS%:fontcolor=%fontColor%:x=90:y=750,drawtext=enable='between(t,0,8)':fontfile=%fontPath%: text='%mArtist%':fontsize=%mArtistFS%:fontcolor=%fontColor%:x=90:y=815,drawtext=enable='between(t,0,8)':fontfile=%fontPath%: text='%mLabel%':fontsize=%infoFS%:fontcolor=%fontColor%:x=90:y=875,drawtext=enable='between(t,0,8)':fontfile=%fontPath%: text='%mDomain%':fontsize=%infoFS%:fontcolor=%fontColor%:x=90:y=905[out]" output2.mp4

REM del output.mp4
REM del output1.mp4

Und jetzt Zeile für Zeile näher erklärt: Mit der ersten Befehlszeile starte ich eine For Schleife die sämtliche GIF Bilder im Verezichnis nicht nur in MP4 VIdeos umwandelt, sondern auch gleich bei 25 Bildern Pro Sekunde auf 5 Sekunden länge und eine Auflösung von 1920x1080 Pixel bringt. Die mp4 Files werden in einen unterordner "Tempo" abgespeichert.
In dem nächsten Block lasse ich sämtliche mp4 Videos in dem Unterordner "Tempo" zu einer Textdatei als Liste abspeichern un zu einem einzigen Video zusammen fügen und mit einer mp3 Datei abmischen. Ich habe jetzt also ein Video mit den jeweiligen GIF Animationen und der dazu gehörigen Musik aus der mp3 Datei.

Es folgtein Satz an Variablen die ich mit SET definiere. Das hab ich eingebaut damit ich nich jedes mal in die elendig lange letzte Befehlszeile die jeweiligen Stllen raussuchen und mit den neuen Informationen füllen muss. Erst der Musiktitel, dann der Künstler, gefolgt von dem Herausgebendem Laben und einer Webseite.
Im nächsten Satz an Variablen definiere ich weitere Parameter für die generierung des neuen Videos. Es handelt sic hhierbei ausschliesslich um Schriftgrössen, Farben des Textes und dem Pfad zu der jewweiligen Schriftart.
Bsonderdas das mit der Typografie ist schier unglaublich denn bisher musste man immer über die GD Library oder ImageMagic an die Texteinbindung ran. Jetzt lässt sich alles via ffmpeg lösen.

In der letzten Zeile nehme ich dann das neu generierte mp4 Video samt Musik und packe sowohl als Watermark-Overlay den QR-Code oben rechts hin, als auch unten links die Musikvideo information.

Das einzige was mir zum finetuning jetzt noch fehlt ist das der Txt ein und ausgeblendet wird und nicht so plötzlich erscheint.
Auf diese Weise - via ffmpeg - spare ich mir schätzungsweise 4 Stunden Arbeit und 2 Stunden rendering des Videos.
Published in remember the .GIF
Bei fast jeder "remember the .GIF" Nacht die ich in Hamburg realisiert habe, wurde ich gefragt wo man die Videos downloaden kann. Daraus entstand die Idee neben dem eigentlichem JS und HTML script tatsächlich auch Videos zu erstellen. Das Resultat ist der eigens für die GIF Videos generierte Youtube Kanal.
Ursprünglich liess ich ein script 150 GIFs aus meinem Archiv auswählen und in einen neuen Ordner kopieren. Mit dem Bulk File Renamer konnte ich die GIFs dann nach einer numerischen Reihenfolge (1,2,3,4...) umbennen. Diese 150 Files importiere ich dann in Magix Video Deluxe, welches es mir zum Glück erlaubte automatisch einzustellen das jedes importierte Bild 5 Sekunden lang sei. Bei 95% der GIF Bilder klappte das auch ganz gut. Aber es gab immer ein paar die sich auf Grund ihrer Codierung nicht oder nur falsch importieren liessen. Da fehlte dann entweder das looping oder sie waren zu hoch, während die Videos ja im 16:9 Format generiert wurden. Waren die Bilder ein mal drin und richtig proportioniert, generierte ich das mp4 Video direkt aus Magix heraus. Dieser ganze Vorgang konnte schon mal 4 bis 5 Stunden dauern.

Logisch das eine schnellere Lösung her musste, die auch über viele remember the .GIF Videos hinweg perfekt funktionierte - und plötzlich dann doch nicht mehr. Aber Schritt für Schritt.....
Die zweite Lösung die ich fand, war einfach den Bildschirm aufzunehmen. Dazu schrieb ich eine eigene HTML Datei die sowohl aus einem Ordner GIF Animationen abspielte, als auch im Hintergrund schon mal die Musik laufen liess. Wie gesagt funktionierte das lange Zeit auch sehr gut, doch in den letzten Videos waren die gecapturten Videos seltsamer Weise immer schneller (bei Schätzungsweise 20 Frames Pro Sekunde) als ursprünglich mit 25fps angegeben. Ich habe nach langen Recherchen heraus gefunden das dies mit der Prozessor Leistung zusammen hängt - sowhl von der Grafikkarte, den Treibern als auch dem Rechner selbst.
Was mich wunderte war das diese Lösung über viele Videos hinweg ja super funktioniert hatte. Ich muss irgendwann mal den falschen Schalter getätigt haben.


Die Lösung die ich seit gestern Testweise habe fahren lassen ist der Idealzustand und den habe ich ffmpeg zu verdanken. ffmpeg ist ein Kommandozeilen Tool das Videos, Bilder und Audio konvertieren, verbinden, kürzen, ändern etc. kann. Ich habe gestern eine so genannte BAT Datei generiert die in einer handvoll Zeilen folgendes macht:
- Suche Dir 50 GIF Animationen heraus
- Verlängere Sie auf maximal 5 Sekunden
- Passe ihre Grösse auf 1920x1080 an
- Mache aus jeder Datei eine Videodatei
- Verbinde alle neu generierten Video Datein
- Packe die Datei music.mp3 unter das Video
- Konvertiere alles zu einem mp4

Dieser Prozess dauert keine 25 Minuten und läuft voll automatisch ab. Es ist ein wunder! Und für mich mal wieder beängstigend da es mir zeigt wie verdammt schnell die Zeit mit der technischen Herausforderung und ihrer Entwicklung voran schreitet. Es gibt für alles eine Lösung. Es ist nur eine Frage der Zeit und des Geldes.
Hier das script aus der BAT Datei die ich generiert habe....
for %%A IN (*.gif) do ffmpeg -ignore_loop 0 -i "%%A" -s 1920x1080 -t 5 "tempo\%%A".mp4

(for %%i in (tempo\*.mp4) do @echo file '%%i') > list.txt
ffmpeg -f concat -i list.txt -i music.mp3 -c copy output.mp4
del list.txt
del tempo\*.mp4



Und hier ein paar ffmpeg Kommandozeilen Optionen die mich letztendlich zu meiner Lösung führten und durch die ich die Handhabung von ffmpeg besser checken lernte:

Informationen aus einer Audio/Video Datei entnehmen
ffmpeg -i video.avi

Video Datei in Bildersequenz umwandeln
ffmpeg -i video.mpg image%d.jpg

Die Tonspur aus einer Videodatei in einer neu generierten Datei abspeichern
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 sound.mp3

AVI Video in ein MPG Video konvertieren
ffmpeg -i video_origine.avi video_finale.mpg

AVI in ein unkopmrimiertes GIF umwandeln
ffmpeg -i video_origine.avi gif_anime.gif

Eine neue Tonspur über ein Video legen
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg


FFMPEG gibt es kostenlos unter https://ffmpeg.org/
Published in Tools & Tutorials
Saturday, 27 August 2016 16:27

remember the .GIF 40 ist online

Ich hab gerade die 40. Edition des remember the .GIF videoart Projektes online gestellt. Zu dem Song von DJ Dsum remixtem song "Musgos" kamen fast 100 von der künstlichen ScriptIntelligenz ausgesuchten GIF Animationen zusammen.

Published in remember the .GIF
Page 1 of 6
 

Portfolio

Download my PDF portfolio in a low density quality by clicking the button below.

DOWNLOAD

carlos pinto portfolio header

Stickers & Qrofties

I produce and sell stickers and so called "Qrofties" (transparent paper prints at the size of a business card) for IKEA mashups, bookmarkers, scrapbooking and much more.
VISIT

QR Paintings

For half a decade i have been painting QR codes out there on the street and on canvas in acrilic.
VISIT

MR. ROBOT Wallpaper Generator

For the MR. Robot TV series i created an online wallpaper generator that allows you to create your own fanart wallpaper at 1920x1080pixels in Full HD for your computer desktop.
CREATE A WALLPAPER

La Despedida

A roadmovie in form of a documentary that i produced in 2010, about a journey on an italian three-wheeler through Europe to find out how hard it is nowadays to say "Goodbye". The full movie is available online.
VISIT

My Nathan Hunt game

For the first time ever, Google Streetview is used as content for a textadventure (also known as interactive fiction) game. I developed and published the first chapter in summer 2015, that can be playe online and for free.
PLAY THE GAME

Soundcloud love

  • Gorillaz - Ascension (Feat. Vince Staples) (Nic Fanciulli Remix)
     

Onlinetools

Programming

GFX

Audio

Latest job

Seriously.

Random job

My Amazon wishlist

remember the .GIF

As DJ Qroft i programmed a script in HTML and JS that selects randomly one out of thousands of GIF animations and creates a music video based upon these animations.
VISIT WWW.REMEMBERTHEGIF.COM