From 3ae90b87c0a776fe1949dcf34807c8e8f25a9fc5 Mon Sep 17 00:00:00 2001 From: derpeter Date: Fri, 3 May 2024 11:53:27 +0200 Subject: [PATCH 01/20] added osmodevcon24 --- osmodevcon24/__init__.py | 148 +++ osmodevcon24/artwork/background.svg | 946 +++++++++++++++++ osmodevcon24/artwork/intro.svg | 1372 +++++++++++++++++++++++++ osmodevcon24/artwork/outro.svg | 1479 +++++++++++++++++++++++++++ osmodevcon24/artwork/pause.svg | 1208 ++++++++++++++++++++++ 5 files changed, 5153 insertions(+) create mode 100644 osmodevcon24/__init__.py create mode 100644 osmodevcon24/artwork/background.svg create mode 100644 osmodevcon24/artwork/intro.svg create mode 100644 osmodevcon24/artwork/outro.svg create mode 100644 osmodevcon24/artwork/pause.svg diff --git a/osmodevcon24/__init__.py b/osmodevcon24/__init__.py new file mode 100644 index 0000000..4264294 --- /dev/null +++ b/osmodevcon24/__init__.py @@ -0,0 +1,148 @@ +#!/usr/bin/python3 + +from renderlib import * +from schedulelib import * +from easing import * + +# URL to Schedule-XML +scheduleUrl = 'https://pretalx.sysmocom.de/osmodevcon2024/schedule/export/schedule.xml' + +def introFrames(args): + #fade in title + frames = 3*fps + for i in range(0, frames): + yield( + ('title', 'style', 'opacity', easeInQuad(i, 0, 1, frames)), + ) + # fade in subtitle and names + frames = 1*fps + for i in range(0, frames): + yield( + ('title', 'style', 'opacity', 1), + ('subtitle', 'style', 'opacity', easeInQuad(i, 0, 1, frames)), + ('personnames', 'style', 'opacity', easeInQuad(i, 0, 1, frames)), + ) + #show whole image for 2 seconds + frames = 2*fps + for i in range(0, frames): + yield( + ('title', 'style', 'opacity', 1), + ('personnames', 'style', 'opacity', 1), + ('subtitle', 'style', 'opacity', 1), + ) + +def backgroundFrames(parameters): + frames = 5*fps + for i in range(0, frames): + yield( + ('logo', 'style', 'opacity', 1), + ) + +def outroFrames(args): + frames = 2*fps + for i in range(0, frames): + yield( + ('logo', 'style', 'opacity', 1), + ('sublogo', 'style', 'opacity', 1), + ('cclogo', 'style', 'opacity', 1), + ) + # fade out + frames = 3*fps + for i in range(0, frames): + yield( + ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -1, frames)), + ('sublogo', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -1, frames)), + ('cclogo', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -1, frames)), + ) + +def pauseFrames(args): + #fade in pause + frames = 4*fps + for i in range(0, frames): + yield( + ('pause', 'style', 'opacity', "%.4f" % easeInCubic(i, 0.2, 1, frames)), + ) + + # fade out + frames = 4*fps + for i in range(0, frames): + yield( + ('pause', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -0.8, frames)), + ) + +def debug(): + render('intro.svg', + '../intro.ts', + introFrames, + { + '$id': 7776, + '$title': 'Configuring + running GPRS/EDGE data services with OsmoPCU, OsmoSGSN and OpenGGSN', + '$subtitle': 'With some subtitle!', + '$personnames': 'Alexander Chemeris + Harald Welte' + } + ) + + render('outro.svg', + '../outro.ts', + outroFrames + ) + + render( + 'background.svg', + '../background.ts', + backgroundFrames + ) + + render('pause.svg', + '../pause.ts', + pauseFrames + ) + + +def tasks(queue, args, idlist, skiplist): + # iterate over all events extracted from the schedule xml-export + for event in events(scheduleUrl): + if not (idlist==[]): + if 000000 in idlist: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + if int(event['id']) not in idlist: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + + # generate a task description and put them into the queue + queue.put(Rendertask( + infile = 'intro.svg', + outfile = str(event['id'])+".ts", + sequence = introFrames, + parameters = { + '$id': event['id'], + '$title': event['title'], + '$subtitle': event['subtitle'], + '$personnames': event['personnames'] + } + )) + + # place a task for the outro into the queue + if not "out" in skiplist: + queue.put(Rendertask( + infile = 'outro.svg', + outfile = 'outro.ts', + sequence = outroFrames + )) + + # place the pause-sequence into the queue + if not "pause" in skiplist: + queue.put(Rendertask( + infile = 'pause.svg', + outfile = 'pause.ts', + sequence = pauseFrames + )) + + # place the background-sequence into the queue + if not "bg" in skiplist: + queue.put(Rendertask( + infile = 'background.svg', + outfile = 'background.ts', + sequence = backgroundFrames + )) diff --git a/osmodevcon24/artwork/background.svg b/osmodevcon24/artwork/background.svg new file mode 100644 index 0000000..3a87e75 --- /dev/null +++ b/osmodevcon24/artwork/background.svg @@ -0,0 +1,946 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + Pause Pause + o + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osmodevcon24/artwork/intro.svg b/osmodevcon24/artwork/intro.svg new file mode 100644 index 0000000..2a8b797 --- /dev/null +++ b/osmodevcon24/artwork/intro.svg @@ -0,0 +1,1372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Pause Pause $title $personnames $subtitle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osmodevcon24/artwork/outro.svg b/osmodevcon24/artwork/outro.svg new file mode 100644 index 0000000..1fbdc0e --- /dev/null +++ b/osmodevcon24/artwork/outro.svg @@ -0,0 +1,1479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Pause Pause + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osmodevcon24/artwork/pause.svg b/osmodevcon24/artwork/pause.svg new file mode 100644 index 0000000..e8d1e7b --- /dev/null +++ b/osmodevcon24/artwork/pause.svg @@ -0,0 +1,1208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Pause Pause + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 848b72b1136d5159313ae1c97df50d157065a092 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sun, 1 Sep 2024 16:36:15 +0200 Subject: [PATCH 02/20] schedulelib: Ignore missing track field According to the XML schema, the "track" field of an event is not mandatory. So we should replace it with an empty string if not existing like we do for other fields. --- schedulelib.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/schedulelib.py b/schedulelib.py index 340e4d8..a986498 100644 --- a/schedulelib.py +++ b/schedulelib.py @@ -100,6 +100,12 @@ def events(scheduleUrl, titlemap={}): url = event.find('url').text.strip() else: url = '' + + if event.find('track') is not None and event.find('track').text is not None: + track = event.find('track').text + else: + track = '' + # yield a tupel with the event-id, event-title and person-names yield { 'day': day.get('index'), @@ -109,7 +115,7 @@ def events(scheduleUrl, titlemap={}): 'persons': personnames, 'personnames': ', '.join(personnames), 'room': room.attrib['name'], - 'track': event.find('track').text, + 'track': track, 'url': url } From c94b840807af952210a23acd56a8641e34ff3189 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sat, 19 Oct 2024 10:29:06 +0200 Subject: [PATCH 03/20] vcfb24 --- vcfb24/__init__.py | 148 + vcfb24/artwork/Computerfont.ttf | Bin 0 -> 39104 bytes vcfb24/artwork/intro.svg | 15584 ++++++++++++++++++++++++++++++ vcfb24/artwork/lower-third.svg | 6231 ++++++++++++ vcfb24/artwork/outro.svg | 1668 ++++ vcfb24/artwork/pause.svg | 6626 +++++++++++++ 6 files changed, 30257 insertions(+) create mode 100644 vcfb24/__init__.py create mode 100644 vcfb24/artwork/Computerfont.ttf create mode 100644 vcfb24/artwork/intro.svg create mode 100644 vcfb24/artwork/lower-third.svg create mode 100644 vcfb24/artwork/outro.svg create mode 100644 vcfb24/artwork/pause.svg diff --git a/vcfb24/__init__.py b/vcfb24/__init__.py new file mode 100644 index 0000000..1297300 --- /dev/null +++ b/vcfb24/__init__.py @@ -0,0 +1,148 @@ +#!/usr/bin/python3 + +from renderlib import * +from easing import * +import math + +# URL to Schedule-XML +scheduleUrl = 'http://vcfb.de/2024/schedule.xml' + +# For (really) too long titles +titlemap = { + #708: "Neue WEB-Anwendungen des LGRB Baden-Württemberg im Überblick" +} +personmap = { +} + +taglinemap = { +} + +def outroFrames(p): + frames = 2*fps + for i in range(0, frames): + yield ( + ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('plate', 'style', 'opacity', 0), + ) + + frames = 1*fps + for i in range(0, frames): + yield ( + ('logo', 'style', 'opacity', 1), + ('plate', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ) + + frames = 2*fps + for i in range(0, frames): + yield ( + ('logo', 'style', 'opacity', 1), + ('plate', 'style', 'opacity', 1), + ) + +def introFrames(p): + frames = math.floor(1.5*fps) + for i in range(0, frames): + yield ( + ('header', 'attr', 'y', 659), + ('text', 'style', 'opacity', 0), + ) + + frames = 1*fps + for i in range(0, frames): + yield ( + ('text', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ) + + frames = math.ceil(3.5*fps) + for i in range(0, frames): + yield ( + ('text', 'style', 'opacity', 1), + ) + +def pauseFrames(p): + pass + + +def debug(): + render( + 'intro.svg', + '../intro.ts', + introFrames, + { + '$id': 6526, + '$title': 'Besser steuern durch Daten? - Zur Performativität soziotechnischer Systeme und der Quantifizierung der sozialen Welt', + '$subtitle': '', + '$personnames': 'Judith Hartstein und Anne K. Krüger' + } + ) + + #render( + # 'outro.svg', + # '../outro.ts', + # outroFrames + #) + + # render('pause.svg', + # '../pause.ts', + # pauseFrames + # ) + +def tasks(queue, params, idlist, skiplist): +# # iterate over all events extracted from the schedule xml-export + for event in events(scheduleUrl): + if not (idlist==[]): + if 000000 in idlist: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + if int(event['id']) not in idlist: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + + # generate a task description and put them into the queue + if int(event['id']) not in skiplist: + queue.put(Rendertask( + infile = 'intro.svg', + outfile = str(event['id'])+".ts", + sequence = introFrames, + parameters = { + '$id': event['id'], + '$title': event['title'], + '$subtitle': event['subtitle'], + '$personnames': event['personnames'] + } + )) + +# for person in persons(scheduleUrl, personmap, taglinemap, event['id']): +# queue.put(Rendertask( +# infile = 'lower-third.svg', +# outfile = 'event_{}_person_{}.png'.format(str(event['id']), str(person['id'])), +# parameters = { +# '$PERSON': person['person'], +# '$TAGLINE': person['tagline'], +# } +# )) +# +# queue.put(Rendertask( +# infile = 'lower-third.svg', +# outfile = 'event_{}_persons.png'.format(str(event['id'])), +# parameters = { +# '$PERSON': event['personnames'], +# '$TAGLINE': '', +# } +# )) +# + # place a task for the outro into the queue + if not "out" in skiplist: + queue.put(Rendertask( + infile = 'outro.svg', + outfile = 'outro.ts', + sequence = outroFrames + )) + + # place the pause-sequence into the queue + #if not "pause" in skiplist: +# queue.put(Rendertask( +# infile = 'pause.svg', +# outfile = 'pause.ts', +# sequence = pauseFrames +# )) diff --git a/vcfb24/artwork/Computerfont.ttf b/vcfb24/artwork/Computerfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..49f1c620b548e3abd34cf3bd8f0fd73b86b0199e GIT binary patch literal 39104 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 t$7M|iaL9Jihb8(a1-FAkt^f{5b~am)i + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + $subtitle $title  $personnames + diff --git a/vcfb24/artwork/lower-third.svg b/vcfb24/artwork/lower-third.svg new file mode 100644 index 0000000..a70d3b4 --- /dev/null +++ b/vcfb24/artwork/lower-third.svg @@ -0,0 +1,6231 @@ + + + +$PERSON diff --git a/vcfb24/artwork/outro.svg b/vcfb24/artwork/outro.svg new file mode 100644 index 0000000..45f706d --- /dev/null +++ b/vcfb24/artwork/outro.svg @@ -0,0 +1,1668 @@ + + + + + + + + + + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  +More Recordings available on media.ccc.de + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vcfb24/artwork/pause.svg b/vcfb24/artwork/pause.svg new file mode 100644 index 0000000..8ef961c --- /dev/null +++ b/vcfb24/artwork/pause.svg @@ -0,0 +1,6626 @@ + + + +image/svg+xmlPause + \ No newline at end of file From 367e8ea0949bb254bcea57b8425721678dd6de73 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sat, 19 Oct 2024 10:33:17 +0200 Subject: [PATCH 04/20] re-add jugendhackt source gimp file --- jugendhackt/source.xcf | Bin 0 -> 1184118 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 jugendhackt/source.xcf diff --git a/jugendhackt/source.xcf b/jugendhackt/source.xcf new file mode 100644 index 0000000000000000000000000000000000000000..e01939dc62127939a660fe71c69b329289fafa57 GIT binary patch literal 1184118 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%0A-ISPTpWg|D29uDhFwT>*d;z=n}em< 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

tiOQ+g zCsR#kZ4J_DIAd5Vr`9H|vRaq4B5O_3>g`KCg`(zK>JUpM8s@sXtrM+CCxTvr6Ykd$`ppLP z8zd(!ZdJJ7znhZsOvhnrTe@9~IBG`3D@)WP`bv-C&zjp_>JnN zu=FnK9XeCrLhVCZnXZaDh(1}rq78kCN6BF6A{393&q*1PuA^Pj&XtkgN>5Tot}My$ z*g+k^?Ts|lQg$ysD@W)%512CYaH%ILBkRkup>O58q@_o=v@#5EiGUff>d+6;X(ZZ~la zhQ1uPpSadSpO4#7TvMTM$n7bvozRCQy#z#vrO-``%2uXl=rE) zamh6t`d-|~e>RiRI8v`Y98V za*{b+o}tI&Oqm<&dnqCC$ipN>2LKjm0+$APKSB5o+_IMUF}Q^-?~8CtTi$2k7Pq`_ z!!2)lABbDv^1c$c#N~Y|Zjp0MhrSoL%(-?$AB|h+T%(~c$1QcP#n9*D7CYBm=o@m& zoog%fAxTdG>0%|clzs}*q@-j{muKiPIa4W0Ng>g#&KZs5ztsk#k;FLJ5#>FZbh4Wq zC=(^o*yKVP7x8V|hf=+=Bp=FXX|oEE$&Ei*dcoY2kR_Wh7=9AQWc>vbP(qvRz+enY zxRXT~%tCDf$TkcHqBaX;C5n_mrlK|#WG@DzQJW949E16&O$ynN!I0EuhO9}EGRUOV zribiGkuu1*)aHmROp!9k%+w}|Y)x&f$l#PyiL6d-z{vEJ(+Rwmj1&rLM#dFw1sb_tC!`_1ur@g4rX`>I9hXe7GTIir#Mx7uJdk{Bn;pqxjOPIi<3 zXd3A^&YbHg1IMgNj6_F{3KS%`U@tY#4p)_!5Ea7 zCW|nbg%amv8wLYWVxO!;(JRPQ)b@bv#b7jQ8$p(1FdwzuAR96mlG>J#H7R-pnUvbT zkXT8;nL0<7DfT?`+b^ZgQVZ zWRy2K(8fi4+xDQXZLG+HHd@(SgBYXQN0weN_aykp=93wZ3_l4-vi^bzC_zegU@!(H zaLFPJW}yT#*@nSDlmI6yQA7zc6(#7&UJOQ~HUwlj2J=xH2eKi9A*l@pS(744kV&bH z2-%e)N|14>4GUSAB1({%sf`WUn%eA;!6}y_S)JMxk?ARyBe*6RDHL>xj4Rp-G;VjY z1!%%hGti`=CLkH>8iA&5tO01oP(9EELnN`z8X|-Bq9Kx3=M0gyddUf^^BGl@JO+?d z7kI`;KxkaKW(W1N7yaDrH^=A2clh`2TT3woDW-rt#XR3%o2?X6KyF1|a)mSt2^Uf? zBwkN#}T`b*qKOaPca24 zrhvPK6jP953Q|mg2ujkcQ%u3fvy!Kn0#hJUOhJk%$lIaAHZ4_|_Uf=3%GN0w3Mfqg54SDoMH-S zT1+todn3R(#T4X}krY$#JS!t9reH-(45wSlOT(kgNlvfih|?;GolZ&YCMaSzQ4u?B zlGy2z#7>hWPB8_x958x0@+GC10=p?;gQ=l{xDW)LB z6fm$L#T2AE1y`0*or3k{RHuOXEb}{r6jR^

wz|3JPT{1f`2ZeS}n}0MTm^)hF9? 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�?8Uk7~M7GbWp-Vt3hK7Nb4UGUT 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ⅈ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 Date: Sat, 19 Oct 2024 10:45:29 +0200 Subject: [PATCH 05/20] vcfb24 fix imports --- vcfb24/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/vcfb24/__init__.py b/vcfb24/__init__.py index 1297300..d085b33 100644 --- a/vcfb24/__init__.py +++ b/vcfb24/__init__.py @@ -1,5 +1,6 @@ #!/usr/bin/python3 +from schedulelib import events from renderlib import * from easing import * import math From 26c660a1358334ee935d8ca59b68b84a07f8d96e Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sat, 19 Oct 2024 11:00:23 +0200 Subject: [PATCH 06/20] vcfb24 switch to make-ffmpeg-fade --- vcfb24/{artwork => }/Computerfont.ttf | Bin vcfb24/SourceSansPro-Semibold.ttf | Bin 0 -> 289916 bytes vcfb24/__init__.py | 149 -------------------------- vcfb24/config.ini | 37 +++++++ vcfb24/{artwork => }/intro.svg | 0 vcfb24/{artwork => }/lower-third.svg | 0 vcfb24/{artwork => }/outro.svg | 0 vcfb24/{artwork => }/pause.svg | 0 8 files changed, 37 insertions(+), 149 deletions(-) rename vcfb24/{artwork => }/Computerfont.ttf (100%) create mode 100644 vcfb24/SourceSansPro-Semibold.ttf delete mode 100644 vcfb24/__init__.py create mode 100644 vcfb24/config.ini rename vcfb24/{artwork => }/intro.svg (100%) rename vcfb24/{artwork => }/lower-third.svg (100%) rename vcfb24/{artwork => }/outro.svg (100%) rename vcfb24/{artwork => }/pause.svg (100%) diff --git a/vcfb24/artwork/Computerfont.ttf b/vcfb24/Computerfont.ttf similarity index 100% rename from vcfb24/artwork/Computerfont.ttf rename to vcfb24/Computerfont.ttf diff --git a/vcfb24/SourceSansPro-Semibold.ttf b/vcfb24/SourceSansPro-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bf69cc2d854a05855b0f3adae7c37e3802ea1af0 GIT binary patch literal 289916 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

adsO zI80e-c}4C#yDyjRT7OqTslA~av>yf!^$+j->KcU?fAEg|$7+b~EnvCLkeop0HNsCZc$_IFqGk6NWJ5hf+ug}JJNEtKjLLcxO;#Wi;Vw92) zVISC@jmA3)kw-4wnisKU{`}gV5kte$`oFs8%|_#X*-+tRuf2ZTZLgpIYu_aHXv9=X zUj^6XVMItzQsS=E_~i@2mwV5>=RN24ox9_XbMZG8CMFixgA0?B3+5H$*;6O4NnKt} zz2@Yp>rz+P{MeRM)@_&^9i249zmmFz`jLfxB*!k#V3nRlKg`rF7Nq#U%_L>Shu43< zKA!pb;|Sz_jsm%de+WM4#OG}&k3GbLh-#>*YLYKRx#h7t9g(u*XHNF^b(XC&$&kAD z%!3aOx1_V0^T!k(#Z4^{_pP>t?=vT!IQGN|wH>r|j5uzi4=+XDN;-%_l}ej0Dn2lr zc_8UCTqZ#7&`dpm&nd6G)74~10KVxeZ^rw4FMN}AE({#+@49?w+f4t^?GsYf+M5;g zeIr||wntm`U`|N7y^31Qh^Ydff`SWcVMO}+^zh|f-Iotf4fKz`yPw^+F5UWOV7_0e zDgHEt!7Fk%pwxHq+Gf_*L`}PwP!pp6ld7SyL+lmqhkQ_vk>DEq>p9sJg3Y zBsjdB_P0N0EDcul6m@zJb(@7S^T4x_W&H**~I zUvM5E{w7I@G0>uAjMB=;%*+V=J9T^Jwd?EG<=l2`?##fznU!-#j$D29kt65!-E~X+ zmkLJNmUY|s$XpqO)wXAAnqo2HWy}$O|puu`p1@(aoWApZwirq}7Q-DA#3>OhL{6G!6C2zDT@XyB+K0xF?q zu*KOMCnj&2?bun;S=jC$+L86=zoxBDR`Y z4QLnp4U2Or1;4SNBl#W)z1f)@ho4f2@^^75hVv5i5lCX(y z31yPXH$Uu|~g*+bpz!PbG1cef-9YlWGms>wS>A+it9D&yJ+ z{F%36jk&c|u4^_=ZE|M)Z|j3%eSGO}?25Mjk=t5{xtLL@nU%(W$=5Dc3c7Y9YUNp8 zcxnPM%Ql<#@adB@w}oNn;j2!zbvx>;%7pGY_T?{kHqi_#qbV)XYqj#9lv(ZPZ>ErJ z7?w|KdnBVh5~I)e1j_j!!+QfR$isP!xPW9V-H^eUr$+fY!dmi~nDvSEzpsBjLzA$_ z9!JHT`d;`Ec{DbqR?sr3=%tw7=ljt0*Pr;+uUZGM={$4z8^o#OdQrkUs`)FT`BRA|C_zh$~&{%>a}9wf}wX z0hf}T#BE6b6ZlV&eWe+Q=Xi%n}y`0t^au~g$B$xvPzchUG^5MPm7lp99a zUFjBBasJ+n_-oRw_s9PecZ^U9S|;7&q8*M#Ee2}t(ddz?isqBmBvwTozuoYLDd$BItC^%XudxOg_R z&J5634o=2#H;e=WKP8Y@Ans^DA5}@5ux}}nSc!ebLDpnqrF};_rf-_**ue#HWV&w0 z7LvkUvl)+n-aLEDjzb@qZtxBlx|$9QA3f_S9vsg70?t`HhJ{O3^c!nI`JL;_6j6=^ z0W%km&8MHS@qG1`70V~i4rCYQ7;=lV2d??V;hTR9{#?DM4C(9!%I=AOeE!Eoc@`)q zZ5jL>*1zDPObyOC0g}(AtS^50hQUlnj=^lt=so+u^-G!i!V~|Owl{%qyEyvBwUR9P zkR98yEKAlc>#!x+mSi24FZn)WJGNsxaqKvbbD!jL5)udyDCJ07u5uJ8g_fgfIZF$r z1p2hJ(5GqPeOh|boAzlbP#&%xk>Bs^?JP6Nzv95%YAjo{}EvZ$=+2=wl9jkXAm|s^iR`VcIRv+mvbDapQ}x zRH+;7KpT<8BnwLy=CXpW08zac3qa`w^=o%Kkit864IZ+YV~2aoQ!}M!jR!8;J1n(OkpV~aeZsaX!&fsu{IhF7~{sHdyaTV zFX;68O10{kB{CQ=D2&72$V9Ml1Jlf`pXloDvUrrs5-)%Lrv2BCRpu&Gxtj|Lv$BgS zx|-}2p^be5dtltlQg3|}VFkl-!aNFkC%Id-%aU#ae8bHtd+&E5D+864-dJdL{cL}2 zmAhteGT`$E#@JuVqBRu}l{_~R^tTw9+oac<5>MHUMk~0k2kf27Mh;u7sE2i)X0IX9 z6;Wi_;+WI|&#r>(Z}J~Ns;9gMN#DT_mD<8@99z3F&ycTC=ajLr{=AJWtA515Y7=`- zeq*`PI@I_5#Gd8fIElHS)8U`sR6;=>Z}g9yq4Y)eF83BhGQ9=Zdu2*1o^lo{K$&yB zWtpKUCr7=k#Mh?xc5dnNl(+dxmZ@`c3XRJw*B{%|yQOFI;-Fn4+o|w0tUq;XeS=4_ z6POP!{s8}>UkmW~GH$J9*j%{i2UVYR!zZ0kX1n(7+2qrvEN zPSgb_LTyl z>5Rya$Aw7mZbg>7z?^^8#k;c<@_ci_RqQYKyHkM*hpfoStho z%d=$iTy0+0a1VaVWw?3qm;cbk?Dm-MKN6agx~`sbTetbiC(YeBjOo&yB;1L+@uC7* zeSG)G(_~@r3(p)lfV`n!|9Yb2`R7Hhq_?aU#1CS<*HBMM^@RJ>J?x$XU#08(lp&6! z3V&aY*YR*EL!A9p{ux>VZ9oU{dpf)gZUGlPb}PI87Ip&9Gw>GpJA}wQq@etaSoI#{ z)c#Mzb<(}gMzT{Q!scGQk3q>V1*tWhysidS!98KP@o#5MF3Pg+mFGXO?+(O;e~$H z$&>WZ0TFQdH$b5f>VF^Q)wB=I@MGZK8yp$qr4^RdI}QXRz<1#>dDht6)mQsGa@j8u zCBhs@=^m6Yw}M{+zkBw7@`6w9Pxgbpc-h4Kf zCR(9s8!~umNnSj0C)2bwtOnq9$>F6weuHZJm5q8{F2y~z|m>@5o!sU)rD5NF2 zW65W%XLqmv4twnzYq#R5YkFEh$RPe*NDtDBB3nEZsrR^b*`{!ehatzgZmRs0j&EK#sF&ePJxfHVth zvNGwvpfd^5xLlTU4@NSF$I{wlRi$>7CP$rX4j9X-Z3e$_Z+G|JhaSo@_13PM3C*3( z&Kj3x)g0V8G;TGT;L0$JW(^KbHqIEm*L>poFLaW0!AyTj=8`()AT1=jO!78nP`GXV zxG;zCr_j+4_pK|>$&XSh^dsgCU0gJYysHmY~ zyuD3Z)M+xIU;f@UmtxqH;d2vu{~jXL6?8`ow%xCQ7v11du#NolON&AAd-AqONn1#X zLoJj)A&twR;?mZR;LK1c;8`H9O)3zzMX4%Ku+Bgut*6HOwkh)S^LyEZXKv0Ts1t|3 z`{otmx?m^TFKg}U-+*PtSBCW0=(j}NK?y0rldA(pgGTJDXW>f+(0*MV+W!)>^Th^5 zAh!AZ^R#L)Zk*IWvVBvcVCy&?XccGi`Dhj9gW>i$%5e=WbEPz}gfuYVT((oxfxM5G zFJ$KZ-@O2Tp*{VMOd$buOOw1GdN22)i2`J zr_x+`c44liG~QUMFDT8*&neaC&a&6eIQpE`jHgqg`$*LdBJw&ssb&bGEq%`wmz_?}(a~R-tgfNGq@xW>;U{#-V4p zic1flQp(zl!e9xu)W!Ccbofov>AwP8d4 z$$QnuHsPr=b6KBdvafftw5Y$NT!|x4@Hk$qdKLI!C#Vf&?Ef{-e&t|4advKL?!cZ0 zpM93S_NJq!qN2y~W}@WT^tw22qjwL^<3D)zQ_CxEOl#$nTdsWe*%evrrc_H?$Daij z1sEZ{!^QmvNE4CrLMW3Hm-HVL-1e!9k+&XLsdIf7eroNEYTl2V>?(O)XxwjN# zqeE)sfJ0v7l8kf#?J;%;5|Q2(NzEGN+%F!%AbyAm4=G(NLJ(IKt%wL{=tw^Z&F6sh-}+Yx?4~Cwud@CN5@O zzx^%G_;lvEmwSa{x~HBZ4ie77`3WWYjnrJ+t8pcL$&Go(#Yb`4edO4k&t7)Z_yyxP zu{A7^c$bd1@pC$HPnwUCeBQ_}MRGf%q0xn@6PG=jJnLPmhS4UoRzc=}nU7w~(}d4o z136^0E?9xA5&B3=nv=UZ$fCd&Bgk_C2!G3(@rZW5-)|$=QGPC(J3)26v>-2WJ zUT07Kdj>bA=&X(VfN)j|-y3)y`LeXB^S`CUS;=z+B+we%C7fRDO6AdFSIcpJ(VaSi zTgs_LCk&WJP7OL4kRRuKAZIukAewWZ@(Ge`88lyVqQd$>z(I=eSFOm~>OK$c-_P_A z3m)1N6myfL{!){|6x=eE^2X9EBpV=3AUXR>&;#^NdSa7&!2PeO8RTBqj5%ELzsWD- zBQ0WI;&aLK_0r0cPA+}sE9(R=SI9tnP>NP2W&c!A7R=;lUhb1(IjlffJml?hLx$wg zJ|*%2E8tJHkJk#Xiu@!mcE!i9>dM=gc>c_tck;(Y62WgQ7q?HaUy|OP*ZA&9P3dvC zPbVn2Ah?45*jvW4^;I(0jS5M);R}=pbJvH3&0#*XoQ?~S^2V-pRl51`k z+!m+)nE2-pen6`m-9p}DtN}h&@trDsMsyMQoxabNKKW7jy-R1c>dGvZy=7Kw8GdeA zkhX!(Z8m}5`M+nL7I$W7S9&+Fl3o@20mkyiJEo;WEs7IUOBI)(Ko48L@Q{C$ZJMa^VQtqNz(Z~ZVGUp z7;IBm7(7Q1X>FqPQbRraiQMz6lg7lUKis_G46e;!(BuNY`-nkbQH zdwavpGr{#u;aKy=-bSfz)f#iRzZwQG&e%Yon_(@vVU=(R9fmUwU660j#cg+T58K6RD>HLdtyXt~&7qI#L#ENt$gH!eLSJiky6qj-P{q7zWs@&zS1mIdv?i^3Nb4AC zazz~ZIT}NW&SKDym|P?`@P@CL{q$PQ6vN4NkbMD|z-P9!(<4lloT%sVp+48W9`Dbz z`szB{S{sAWrbr-O?{ly8*RN}6^hcIAZ2W$Wy}QiPQWt1i)8MK0dj?Gw$6#Y*s6?JW z*4;WC04D9A!5_Hisg|#D{+Ua(yG34tJ&ST!H|%x3o2^WKrZ*{J+kkqYWji>Y-ZzGv zM8prB;7~9Pbe%xD)E^opI~7&o4Jq-B+S>91+T!eGd3h(ltcW|SlP_Re>})vkY0A*M z{2S;U97FGHLiRwOqPI?Xp+?Xf{Dn)sA?!J=PYU3nzLWokBM1Zf4Z2Rg?OBuY=x3=K zNT`5BgQe#DPjM#EA!=~Wks*>_{#i~XndFrv>H)4`Fj|18urj&N+3 zww>dZCpjm>t{e2?I`-VXNY6rNbqV)dm*ixtO-0r(TzX-*^qXkQ<119|kd-(E$F=B< zLR%#gi`d$d?+Fyg4lzC8zGun*)I|O$RxNs`(Dsg`2MYeElyfSLPUIWp+Kp4^-)c7+ z`C0mn#w_SJkTf$Np23g zh=U3UM-UcI`EQjNB@zb->z4j}QSXkF8B8u?+f2Y7wN_R32Ra5TTPsY<-O=(L#ZjlF zQEzgrsC2LYOiQi4PB+=6x3TxU0bSUkw^yI}NnkYS>!{NVw)y(K%Ue9{VV%3*(!0KC zZ%|#HHJfACTb!qS5lvC=s!~5}C)$<#46{OS;E>i5rT}Py#z}V}9dVa3w*J6@_4E7p z&zq~u%d5?%n)31*)ycc=`ob6Py6fb$Z_Db{8$F(lt5y9>kOnZ0lipzJ`1Y(tj=GxHK$%cIkZBqF>+9Z$Qi)a%PG(*Ze?V;3xL#l`5 z0p**^x7eb_zM5dGbw$r~cdggaWNfOOiLKcatBVdaZB*4c`wf)=ueDY`Uhi>vE#y&>7snj`Rb`w7OFk9nt{ZmeaTP~WL= zEpJKu7du(sQ>m8ke&n;`^F3WhkKHhhwMM(;p8{V4<~6)zX9;1i;s!7|nX=?EB>u&b z6M4U}!te>Hr{ISOTF0UCVmFt$r{e#tPpDv6eC|{+y%A9y9;IVnFMWu}u)%Bn#`2&cT^GH_dESv=K~G+u5_{7vmCTfMa=QDU;PLi~OCKH^qHULbq(N0C;#%@j?jtG~S5uX^bA+aGw~_S+wtuHLe0)kd#(tvVv~@#_cZ{lle{cjBUsK)}(gYw^y+*KCV#Y0=l0-Pp16V>@fPlnMm5t%~kF zL{bX2jVPsX+v{;|(~uYDm+VUC9qQ>H=s6GjYSIcg@c3-aR|JizqH=w)lr=wspiZ2}_!0>*wC@ zvo#xE_#{+GwO!m9taUVT)z-Mm->@;Ri)nA^?b|g1Mspsy^(>cL&rm6nThB}Txwi$fjdr@3dv4Bx)yGcM);MCi7SB|Ca%*HA zvVLkm*1PGZxX6E7#{+BE*C(YG=RQ#6G?z+xQ1wmVp^*O|n7XO9eC)YUL zLHM_pEWO=GKN*(n1NYy1@BI&)oUYk1y=JS=w{^|*jvB&MSnq=O`uvvcgMB$V^_iDu zskC6p-uiE7?L6@*!H^{tu`|A{6|}yy_u#34U{j^Bxi-9Gs`QxYB9<-RShATe9WN+H9Cz5y6t()7r4o z5HEry+vb*)57&T4l%jZ_C(ZQ|QmX)w#2kJtwVh8<0TDfkdgRI!2buE<4Z|Q^hm*0bu`~`P{Kj1~$g+lp)tSIe8 z+P!2RHk;39v%!)T zq~LYPkjJh6h_e}4ku#)yflRARYw>nPX{FcXaU!z2%{Em(w88B2>g7R;$77*4b3L6A ze{H$lW6(A_{bM7}#$a8ebLk0PzUtc8O~9D<$7ib<5Al{3(BlQ77dL$bzaB&n9=&|C zLR;xERf+w2#SuN7>>{IIsWvr0CK+VMCEr1&gDglS7he2TZqdpQ$+hhG6MOeQff>d3 zh~an$GxQdpnYVb}P9}-6!;+Vz57YTRKPx1EyhdDQSGp=MGE`Q{6y+`lJKPXH-WJj} zcyaOC;sl4av&$r};N*pBg2O@zIN_2rGHa|7su^9C>@w8yFq_fpYz*;NoX{t`2You_ zZ*yGUCR~6cTEyGWPXhi9hrg4AFV4ZUd5cs@@H4-nl8bZfA;~Q$`93fCerhzAVKf3x zDP({c<%ECyqDq(1;VM_iSe2Vy)^MJrOO}Y>UcP3&de5HfD;piR-Rit?99W?Zb^}T{<^SYZ{Zj(& z2OKroZ5;kD4*wUy(PEY4MW$o4Ta-}DS=Adaj*koQAG61qU4UCPRqUD{FJI2f|5*BN z8eICHDR|Z+Y4EHoQ}FDa0-R~Aq3oUSJ;m(Fme^0zYOn`U1DIAxcn?xV7K}oCZjro& z92=hk<+1*e&k3;|lH<(GuA;Lc>~x66#4OxmzuOkITB9}_{r|YF!Rc(U3BPImWlOfQ zX7)MMgB5ai⋙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�U_jB1 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 TdYR6yNE*I|K37M1_?iC(?LmA) literal 0 HcmV?d00001 diff --git a/vcfb24/__init__.py b/vcfb24/__init__.py deleted file mode 100644 index d085b33..0000000 --- a/vcfb24/__init__.py +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/python3 - -from schedulelib import events -from renderlib import * -from easing import * -import math - -# URL to Schedule-XML -scheduleUrl = 'http://vcfb.de/2024/schedule.xml' - -# For (really) too long titles -titlemap = { - #708: "Neue WEB-Anwendungen des LGRB Baden-Württemberg im Überblick" -} -personmap = { -} - -taglinemap = { -} - -def outroFrames(p): - frames = 2*fps - for i in range(0, frames): - yield ( - ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), - ('plate', 'style', 'opacity', 0), - ) - - frames = 1*fps - for i in range(0, frames): - yield ( - ('logo', 'style', 'opacity', 1), - ('plate', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), - ) - - frames = 2*fps - for i in range(0, frames): - yield ( - ('logo', 'style', 'opacity', 1), - ('plate', 'style', 'opacity', 1), - ) - -def introFrames(p): - frames = math.floor(1.5*fps) - for i in range(0, frames): - yield ( - ('header', 'attr', 'y', 659), - ('text', 'style', 'opacity', 0), - ) - - frames = 1*fps - for i in range(0, frames): - yield ( - ('text', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), - ) - - frames = math.ceil(3.5*fps) - for i in range(0, frames): - yield ( - ('text', 'style', 'opacity', 1), - ) - -def pauseFrames(p): - pass - - -def debug(): - render( - 'intro.svg', - '../intro.ts', - introFrames, - { - '$id': 6526, - '$title': 'Besser steuern durch Daten? - Zur Performativität soziotechnischer Systeme und der Quantifizierung der sozialen Welt', - '$subtitle': '', - '$personnames': 'Judith Hartstein und Anne K. Krüger' - } - ) - - #render( - # 'outro.svg', - # '../outro.ts', - # outroFrames - #) - - # render('pause.svg', - # '../pause.ts', - # pauseFrames - # ) - -def tasks(queue, params, idlist, skiplist): -# # iterate over all events extracted from the schedule xml-export - for event in events(scheduleUrl): - if not (idlist==[]): - if 000000 in idlist: - print("skipping id (%s [%s])" % (event['title'], event['id'])) - continue - if int(event['id']) not in idlist: - print("skipping id (%s [%s])" % (event['title'], event['id'])) - continue - - # generate a task description and put them into the queue - if int(event['id']) not in skiplist: - queue.put(Rendertask( - infile = 'intro.svg', - outfile = str(event['id'])+".ts", - sequence = introFrames, - parameters = { - '$id': event['id'], - '$title': event['title'], - '$subtitle': event['subtitle'], - '$personnames': event['personnames'] - } - )) - -# for person in persons(scheduleUrl, personmap, taglinemap, event['id']): -# queue.put(Rendertask( -# infile = 'lower-third.svg', -# outfile = 'event_{}_person_{}.png'.format(str(event['id']), str(person['id'])), -# parameters = { -# '$PERSON': person['person'], -# '$TAGLINE': person['tagline'], -# } -# )) -# -# queue.put(Rendertask( -# infile = 'lower-third.svg', -# outfile = 'event_{}_persons.png'.format(str(event['id'])), -# parameters = { -# '$PERSON': event['personnames'], -# '$TAGLINE': '', -# } -# )) -# - # place a task for the outro into the queue - if not "out" in skiplist: - queue.put(Rendertask( - infile = 'outro.svg', - outfile = 'outro.ts', - sequence = outroFrames - )) - - # place the pause-sequence into the queue - #if not "pause" in skiplist: -# queue.put(Rendertask( -# infile = 'pause.svg', -# outfile = 'pause.ts', -# sequence = pauseFrames -# )) diff --git a/vcfb24/config.ini b/vcfb24/config.ini new file mode 100644 index 0000000..0fb3ad3 --- /dev/null +++ b/vcfb24/config.ini @@ -0,0 +1,37 @@ +[default] +schedule = http://vcfb.de/2024/schedule.xml +# ffmpeg -loop 1 -i intro.png -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -c:v libx264 -tune stillimage -pix_fmt yuv420p -c:a aac -r 25 -t 10 intro.mp4 +template = intro.mp4 +alpha = false +prores = false +fontfile = true +inout = t + +[title] +in = 1 +out = 9.5 +font = Computerfont.ttf +fontsize = 100 +fontcolor = #ffffff +x = 85 +y = 122 + +[speaker] +in = 2 +out = 9 +font = SourceSansPro-Semibold.ttf +fontsize = 65 +fontcolor = #ffffff +x = 85 +y = 861 + + +[text] +in = 0 +out = 0 +font = Computerfont.ttf +fontsize = 0 +fontcolor = #ffffff +x = 0 +y = 0 +text = '' diff --git a/vcfb24/artwork/intro.svg b/vcfb24/intro.svg similarity index 100% rename from vcfb24/artwork/intro.svg rename to vcfb24/intro.svg diff --git a/vcfb24/artwork/lower-third.svg b/vcfb24/lower-third.svg similarity index 100% rename from vcfb24/artwork/lower-third.svg rename to vcfb24/lower-third.svg diff --git a/vcfb24/artwork/outro.svg b/vcfb24/outro.svg similarity index 100% rename from vcfb24/artwork/outro.svg rename to vcfb24/outro.svg diff --git a/vcfb24/artwork/pause.svg b/vcfb24/pause.svg similarity index 100% rename from vcfb24/artwork/pause.svg rename to vcfb24/pause.svg From 0bb26d6b253580bdf488c68c45751acfcae09545 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 21 Sep 2024 21:54:15 +0200 Subject: [PATCH 07/20] make-ffmpeg: Refactor code --- make-ffmpeg.py | 455 ++++++++++++++++++++++++------------------------- 1 file changed, 227 insertions(+), 228 deletions(-) diff --git a/make-ffmpeg.py b/make-ffmpeg.py index fe4b745..51b9653 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -4,152 +4,143 @@ import os import sys import subprocess -import schedulelib import argparse -import shlex -from PIL import ImageFont -from configparser import ConfigParser -import json -import platform import ssl +from configparser import ConfigParser +from pathlib import PurePath +import platform + +from PIL import ImageFont +import schedulelib ssl._create_default_https_context = ssl._create_unverified_context -# Parse arguments -parser = argparse.ArgumentParser( - description='C3VOC Intro-Outro-Generator - Variant which renders only using video filters in ffmpeg', - usage="./make-ffmpeg.py yourproject/", - formatter_class=argparse.RawTextHelpFormatter) -parser.add_argument('project', action="store", metavar='Project folder', type=str, help=''' - Path to your project folder - ''') +class TextConfig: + inpoint: float + outpoint: float + x: int + y: int -parser.add_argument('--debug', action="store_true", default=False, help=''' - Run script in debug mode and render with placeholder texts, - not parsing or accessing a schedule. - This argument must not be used together with --id - Usage: ./make-ffmpeg.py yourproject/ --debug - ''') + use_fontfile: bool + fontfile: str + fontfile_path: str + fontfamily: str -parser.add_argument('--id', dest='ids', nargs='+', action="store", type=int, help=''' - Only render the given ID(s) from your projects schedule. - This argument must not be used together with --debug - Usage: ./make-adobe-after-effects.py yourproject/ --id 4711 0815 4223 1337 - ''') + fontsize: int + fontcolor: str = "#ffffff" -parser.add_argument('--room', dest='rooms', nargs='+', action="store", type=str, help=''' - Only render the given room(s) from your projects schedule. - This argument must not be used together with --debug - Usage: ./make-adobe-after-effects.py yourproject/ --room "HfG_Studio" "ZKM_Vortragssaal" - ''') + def parse(self, cparser_sect, use_fontfile: bool): + self.inpoint = cparser_sect.getfloat('in') + self.outpoint = cparser_sect.getfloat('out') + self.x = cparser_sect.getint('x') + self.y = cparser_sect.getint('y') -parser.add_argument('--skip', nargs='+', action="store", type=str, help=''' - Skip ID(s) not needed to be rendered. - Usage: ./make-ffmpeg.py yourproject/ --skip 4711 0815 4223 1337 - ''') + self.use_fontfile = use_fontfile + if use_fontfile: + self.fontfile = cparser_sect.get('fontfile') + self.fontfile_path = str(PurePath(args.project, self.fontfile).as_posix()) -parser.add_argument('--force', action="store_true", default=False, help=''' - Force render if file exists. - ''') + if not os.path.exists(self.fontfile_path): + error("Font file {} in Project Path is missing".format(self.fontfile_path)) + else: + self.fontfamily = cparser_sect.get('fontfamily') -args = parser.parse_args() + self.fontsize = cparser_sect.getint('fontsize') + self.fontcolor = cparser_sect.get('fontcolor', self.fontcolor) -if (args.skip is None): - args.skip = [] + def fit_text(self, text: str): + global translation_font + translation_font = ImageFont.truetype( + self.fontfile_path, size=self.fontsize, encoding="unic") + + # TODO: Make this work with font family as well! + + return fit_text(text, (1920-self.x-100)) + + def get_ffmpeg_filter(self, inout_type: str, text: str): + filter_str = "drawtext=enable='between({},{},{})'".format( + inout_type, self.inpoint, self.outpoint) + + if self.use_fontfile: + filter_str += ":fontfile='{}'".format(self.fontfile_path) + else: + filter_str += ":font='{}'".format(self.fontfamily) + + filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text='{4}'".format( + self.fontsize, self.fontcolor, self.x, self.y, text) + + return filter_str -def headline(str): +class Config: + schedule: str + template_file: str # video background + alpha: bool = False + prores: bool = False + use_fontfile: bool = False + inout_type: str = "t" # in and out time format: t for seconds, n for frame number + + fileext: str + + title: TextConfig + speaker: TextConfig + text: TextConfig + text_text: str = "" # additional text + + +def parse_config(filename) -> Config: + if not os.path.exists(filename): + error("config.ini file in Project Path is missing") + + conf = Config() + + cparser = ConfigParser() + cparser.read(filename) + + defaults = cparser['default'] + conf.schedule = defaults.get('schedule') + infile = PurePath(args.project, defaults.get('template')) + conf.template_file = str(infile) + conf.alpha = defaults.getboolean('alpha', conf.alpha) + conf.prores = defaults.getboolean('prores', conf.prores) + conf.use_fontfile = defaults.get('fontfile', conf.use_fontfile) + conf.inout_type = defaults.get('inout', conf.inout_type) + + conf.title = TextConfig() + conf.title.parse(cparser['title'], conf.use_fontfile) + conf.speaker = TextConfig() + conf.speaker.parse(cparser['speaker'], conf.use_fontfile) + conf.text = TextConfig() + conf.text.parse(cparser['text'], conf.use_fontfile) + + conf.text_text = cparser['text'].get('text', '') + + conf.fileext = infile.suffix + + if not os.path.exists(conf.template_file): + error("Template file {} in Project Path is missing".format(conf.template_file)) + + if conf.alpha and conf.fileext != '.mov': + error("Alpha can only be rendered with .mov source files") + + if not args.project: + error("The Project Path is a required argument") + + if not args.debug and not conf.schedule: + error("Either specify --debug or supply a schedule in config.ini") + + return conf + + +def error(err_str): print("##################################################") - print(str) + print(err_str) print("##################################################") print() - - -def error(str): - headline(str) parser.print_help() sys.exit(1) -cparser = ConfigParser() -cparser.read(os.path.join(os.path.dirname(args.project), 'config.ini')) -template = cparser['default']['template'] -alpha = cparser['default']['alpha'] -prores = cparser['default']['prores'] -fontfile = cparser['default']['fontfile'] # use a font file instead of a font family -inout = cparser['default']['inout'] # in and out time format: t for seconds, n for frame number - -title_in = cparser['title']['in'] -title_out = cparser['title']['out'] -title_fontfamily = cparser['title']['fontfamily'] -title_fontfile = cparser['title']['fontfile'] -title_fontsize = cparser['title']['fontsize'] -title_fontcolor = cparser['title']['fontcolor'] -title_x = cparser['title']['x'] -title_y = cparser['title']['y'] - -speaker_in = cparser['speaker']['in'] -speaker_out = cparser['speaker']['out'] -speaker_fontfamily = cparser['speaker']['fontfamily'] -speaker_fontfile = cparser['speaker']['fontfile'] -speaker_fontsize = cparser['speaker']['fontsize'] -speaker_fontcolor = cparser['speaker']['fontcolor'] -speaker_x = cparser['speaker']['x'] -speaker_y = cparser['speaker']['y'] - -text_in = cparser['text']['in'] -text_out = cparser['text']['out'] -text_fontfamily = cparser['text']['fontfamily'] -text_fontfile = cparser['text']['fontfile'] -text_fontsize = cparser['text']['fontsize'] -text_fontcolor = cparser['text']['fontcolor'] -text_x = cparser['text']['x'] -text_y = cparser['text']['y'] -text_text = cparser['text']['text'] - -font_t = os.path.join(os.path.dirname(args.project), title_fontfile) -font_s = os.path.join(os.path.dirname(args.project), speaker_fontfile) -font_tt = os.path.join(os.path.dirname(args.project), text_fontfile) - -fileformat = os.path.splitext(template)[1] -infile = os.path.join(os.path.dirname(args.project), template) - -schedule = cparser['default']['schedule'] - -if not (os.path.exists(os.path.join(args.project, template))): - error("Template file {} in Project Path is missing".format(template)) - -for ffile in (title_fontfile, speaker_fontfile, text_fontfile): - if not (os.path.exists(os.path.join(args.project, ffile))): - error("Font file {} in Project Path is missing".format(ffile)) - -if not (os.path.exists(os.path.join(args.project, 'config.ini'))): - error("config.ini file in Project Path is missing") - -if alpha == 'true' and not fileformat == '.mov': - error("Alpha can only be rendered with .mov source files") - -if not args.project: - error("The Project Path is a required argument") - -if not args.debug and not schedule: - error("Either specify --debug or supply a schedule in config.ini") - -if args.debug: - persons = ['Thomas Roth', 'Dmitry Nedospasov', 'Josh Datko',] - events = [{ - 'id': 'debug', - 'title': 'wallet.fail', - 'subtitle': 'Hacking the most popular cryptocurrency hardware wallets', - 'persons': persons, - 'personnames': ', '.join(persons), - 'room': 'Borg', - }] - -else: - events = list(schedulelib.events(schedule)) - - def describe_event(event): return "#{}: {}".format(event['id'], event['title']) @@ -158,27 +149,9 @@ def event_print(event, message): print("{} – {}".format(describe_event(event), message)) -def fmt_command(command, **kwargs): - args = {} - for key, value in kwargs.items(): - args[key] = shlex.quote(value) - - command = command.format(**args) - return shlex.split(command) - - -def run(command, **kwargs): - return subprocess.check_call( - fmt_command(command, **kwargs), - stderr=subprocess.STDOUT, - stdout=subprocess.DEVNULL) - - def fit_text(string: str, frame_width): split_line = [x.strip() for x in string.split()] lines = "" - w = 0 - line_num = 0 line = "" for word in split_line: left, top, right, bottom = translation_font.getbbox(" ".join([line, word])) @@ -193,30 +166,21 @@ def fit_text(string: str, frame_width): return lines -def fit_title(string: str, fontsize: int, x_offset: int): - global translation_font - translation_font = ImageFont.truetype( - font_t, size=fontsize, encoding="unic") - title = fit_text(string, (1920-x_offset-100)) - - return title +def ffmpeg_escape_str(text: str) -> str: + text = text.replace(':', "\:") # the ffmpeg command needs colons to be escaped + return text -def fit_speaker(string: str, fontsize: int, x_offset: int): - global translation_font - translation_font = ImageFont.truetype( - font_s, size=fontsize, encoding="unic") - speaker = fit_text(string, (1920-x_offset-100)) - - return speaker - - -def enqueue_job(event): +def enqueue_job(conf: Config, event): event_id = str(event['id']) + + outfile = str(PurePath(args.project, event_id + '.ts')) + outfile_mov = str(PurePath(args.project, event_id + '.mov')) + if event_id in args.skip: event_print(event, "skipping " + str(event['id'])) return - if (os.path.exists(os.path.join(args.project, event_id + '.ts')) or os.path.exists(os.path.join(args.project, event_id + '.mov'))) and not args.force: + if (os.path.exists(outfile) or os.path.exists(outfile_mov)) and not args.force: event_print(event, "file exist, skipping " + str(event['id'])) return @@ -226,96 +190,131 @@ def enqueue_job(event): event_title = event_title.replace('\'', '') event_personnames = event_personnames.replace('"', '\\"') - t = fit_title(event_title, int(title_fontsize), int(title_x)) - t = t.replace(':', "\:") # the ffmpeg command needs colons to be escaped - s = fit_speaker(event_personnames, int(speaker_fontsize), int(speaker_x)) + title = ffmpeg_escape_str(conf.title.fit_text(event_title)) + speakers = ffmpeg_escape_str(conf.speaker.fit_text(event_personnames)) + text = ffmpeg_escape_str(conf.text_text) if args.debug: - print('Title: ', t) - print('Speaker: ', s) - - outfile = os.path.join(os.path.dirname(args.project), event_id + '.ts') + print('Title: ', title) + print('Speaker: ', speakers) if platform.system() == 'Windows': ffmpeg_path = './ffmpeg.exe' - font_t_win = "/".join(font_t.split("\\")) - font_s_win = "/".join(font_s.split("\\")) - font_tt_win = "/".join(font_tt.split("\\")) else: ffmpeg_path = 'ffmpeg' - if fontfile == 'true': - if platform.system() == 'Windows': - videofilter = "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format( - title_in, title_out, font_t_win, title_fontsize, title_fontcolor, title_x, title_y, t, inout) - videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format( - speaker_in, speaker_out, font_s_win, speaker_fontsize, speaker_fontcolor, speaker_x, speaker_y, s, inout) - videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}'".format( - text_in, text_out, font_tt_win, text_fontsize, text_fontcolor, text_x, text_y, text_text, inout) - else: - videofilter = "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format( - title_in, title_out, font_t, title_fontsize, title_fontcolor, title_x, title_y, t, inout) - videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format( - speaker_in, speaker_out, font_s, speaker_fontsize, speaker_fontcolor, speaker_x, speaker_y, s, inout) - videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}'".format( - text_in, text_out, font_tt, text_fontsize, text_fontcolor, text_x, text_y, text_text, inout) - else: - videofilter = "drawtext=enable='between({8},{0},{1})':font='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format( - title_in, title_out, title_fontfamily, title_fontsize, title_fontcolor, title_x, title_y, t, inout) - videofilter += "drawtext=enable='between({8},{0},{1})':font='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format( - speaker_in, speaker_out, speaker_fontfamily, speaker_fontsize, speaker_fontcolor, speaker_x, speaker_y, s, inout) - videofilter += "drawtext=enable='between({8},{0},{1})':font='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}'".format( - text_in, text_out, text_fontfamily, text_fontsize, text_fontcolor, text_x, text_y, text_text, inout) + videofilter = conf.title.get_ffmpeg_filter(conf.inout_type, title) + "," + videofilter += conf.speaker.get_ffmpeg_filter(conf.inout_type, speakers) + "," + videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, text) - if fileformat == '.mov': - if alpha == 'true': - if prores == 'true': - cmd = '{3} -y -i "{0}" -vf "{1}" -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -shortest -movflags faststart -f mov "{2}"'.format( - infile, videofilter, outfile, ffmpeg_path) - else: - cmd = '{3} -y -i "{0}" -vf "{1}" -shortest -c:v qtrle -movflags faststart -f mov "{2}"'.format( - infile, videofilter, outfile, ffmpeg_path) + cmd = [ffmpeg_path, '-y', '-i', conf.template_file, '-vf', videofilter] + + if conf.fileext == '.mov' and conf.alpha: + if conf.prores: + cmd += ['-vcodec', 'prores_ks', '-pix_fmt', 'yuva444p10le', '-profile:v', + '4444', '-shortest', '-movflags', 'faststart', '-f', 'mov', outfile_mov] else: - cmd = '{3} -y -i "{0}" -vf "{1}" -map 0:0 -c:v mpeg2video -q:v 2 -aspect 16:9 -map 0:1 -c:a mp2 -b:a 384k -shortest -f mpegts "{2}"'.format( - infile, videofilter, outfile, ffmpeg_path) + cmd += ['-shortest', '-c:v', 'qtrle', '-movflags', + 'faststart', '-f', 'mov', outfile_mov] else: - cmd = '{3} -y -i "{0}" -vf "{1}" -map 0:0 -c:v mpeg2video -q:v 2 -aspect 16:9 -map 0:1 -c:a mp2 -b:a 384k -shortest -f mpegts "{2}"'.format( - infile, videofilter, outfile, ffmpeg_path) + cmd += ['-map', '0:0', '-c:v', 'mpeg2video', '-q:v', '2', '-aspect', '16:9', '-map', + '0:1', '-c:a', 'mp2', '-b:a', '384k', '-shortest', '-f', 'mpegts', outfile] if args.debug: print(cmd) - run(cmd) + subprocess.check_call(cmd, + stderr=subprocess.STDOUT, + stdout=subprocess.DEVNULL + ) return event_id -if args.ids: - if len(args.ids) == 1: - print("enqueuing {} job".format(len(args.ids))) +if __name__ == "__main__": + # Parse arguments + parser = argparse.ArgumentParser( + description='C3VOC Intro-Outro-Generator - Variant which renders only using video filters in ffmpeg', + usage="./make-ffmpeg.py yourproject/", + formatter_class=argparse.RawTextHelpFormatter) + + parser.add_argument('project', action="store", metavar='Project folder', type=str, help=''' + Path to your project folder + ''') + + parser.add_argument('--debug', action="store_true", default=False, help=''' + Run script in debug mode and render with placeholder texts, + not parsing or accessing a schedule. + This argument must not be used together with --id + Usage: ./make-ffmpeg.py yourproject/ --debug + ''') + + parser.add_argument('--id', dest='ids', nargs='+', action="store", type=int, help=''' + Only render the given ID(s) from your projects schedule. + This argument must not be used together with --debug + Usage: ./make-adobe-after-effects.py yourproject/ --id 4711 0815 4223 1337 + ''') + + parser.add_argument('--room', dest='rooms', nargs='+', action="store", type=str, help=''' + Only render the given room(s) from your projects schedule. + This argument must not be used together with --debug + Usage: ./make-adobe-after-effects.py yourproject/ --room "HfG_Studio" "ZKM_Vortragssaal" + ''') + + parser.add_argument('--skip', nargs='+', action="store", type=str, help=''' + Skip ID(s) not needed to be rendered. + Usage: ./make-ffmpeg.py yourproject/ --skip 4711 0815 4223 1337 + ''') + + parser.add_argument('--force', action="store_true", default=False, help=''' + Force render if file exists. + ''') + + args = parser.parse_args() + + if (args.skip is None): + args.skip = [] + + config = parse_config(PurePath(args.project, 'config.ini')) + + if args.debug: + persons = ['Thomas Roth', 'Dmitry Nedospasov', 'Josh Datko',] + events = [{ + 'id': 'debug', + 'title': 'wallet.fail', + 'subtitle': 'Hacking the most popular cryptocurrency hardware wallets', + 'persons': persons, + 'personnames': ', '.join(persons), + 'room': 'Borg', + }] + else: - print("enqueuing {} jobs".format(len(args.ids))) -else: - if len(events) == 1: - print("enqueuing {} job".format(len(events))) + events = list(schedulelib.events(config.schedule)) + + if args.ids: + if len(args.ids) == 1: + print("enqueuing {} job".format(len(args.ids))) + else: + print("enqueuing {} jobs".format(len(args.ids))) else: - print("enqueuing {} jobs".format(len(events))) + if len(events) == 1: + print("enqueuing {} job".format(len(events))) + else: + print("enqueuing {} jobs".format(len(events))) + for event in events: + if args.ids and event['id'] not in args.ids: + continue -for event in events: - if args.ids and event['id'] not in args.ids: - continue + if args.rooms and event['room'] not in args.rooms: + print("skipping room %s (%s)" % (event['room'], event['title'])) + continue - if args.rooms and event['room'] not in args.rooms: - print("skipping room %s (%s)" % (event['room'], event['title'])) - continue + event_print(event, "enqueued as " + str(event['id'])) - event_print(event, "enqueued as " + str(event['id'])) + job_id = enqueue_job(config, event) + if not job_id: + event_print(event, "job was not enqueued successfully, skipping postprocessing") + continue - job_id = enqueue_job(event) - if not job_id: - event_print(event, "job was not enqueued successfully, skipping postprocessing") - continue - - -print('all done') + print('all done') From 9210d362480ba3bb9888202c6961f15292f622f4 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sun, 6 Oct 2024 21:49:08 +0200 Subject: [PATCH 08/20] make-ffmpeg: Properly escape special characters --- make-ffmpeg.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/make-ffmpeg.py b/make-ffmpeg.py index 51b9653..b341907 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -66,8 +66,8 @@ class TextConfig: else: filter_str += ":font='{}'".format(self.fontfamily) - filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text='{4}'".format( - self.fontsize, self.fontcolor, self.x, self.y, text) + filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text={4}".format( + self.fontsize, self.fontcolor, self.x, self.y, ffmpeg_escape_str(text)) return filter_str @@ -167,7 +167,12 @@ def fit_text(string: str, frame_width): def ffmpeg_escape_str(text: str) -> str: - text = text.replace(':', "\:") # the ffmpeg command needs colons to be escaped + # Escape according to https://ffmpeg.org/ffmpeg-filters.html#Notes-on-filtergraph-escaping + # and don't put the string in quotes afterwards! + text = text.replace(",", r"\,") + text = text.replace(':', r"\\:") + text = text.replace("'", r"\\\'") + return text @@ -186,13 +191,9 @@ def enqueue_job(conf: Config, event): event_title = str(event['title']) event_personnames = str(event['personnames']) - event_title = event_title.replace('"', '\\"') - event_title = event_title.replace('\'', '') - event_personnames = event_personnames.replace('"', '\\"') - title = ffmpeg_escape_str(conf.title.fit_text(event_title)) - speakers = ffmpeg_escape_str(conf.speaker.fit_text(event_personnames)) - text = ffmpeg_escape_str(conf.text_text) + title = conf.title.fit_text(event_title) + speakers = conf.speaker.fit_text(event_personnames) if args.debug: print('Title: ', title) @@ -205,7 +206,7 @@ def enqueue_job(conf: Config, event): videofilter = conf.title.get_ffmpeg_filter(conf.inout_type, title) + "," videofilter += conf.speaker.get_ffmpeg_filter(conf.inout_type, speakers) + "," - videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, text) + videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, conf.text_text) cmd = [ffmpeg_path, '-y', '-i', conf.template_file, '-vf', videofilter] From 526ef6231a46807c226ea50dba1e2d684cc8ca38 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 21 Sep 2024 22:03:56 +0200 Subject: [PATCH 09/20] make-ffmpeg: add border option --- make-ffmpeg.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/make-ffmpeg.py b/make-ffmpeg.py index b341907..0fbc353 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -28,6 +28,7 @@ class TextConfig: fontsize: int fontcolor: str = "#ffffff" + bordercolor: str = None # border is added, if a color is set def parse(self, cparser_sect, use_fontfile: bool): self.inpoint = cparser_sect.getfloat('in') @@ -47,6 +48,7 @@ class TextConfig: self.fontsize = cparser_sect.getint('fontsize') self.fontcolor = cparser_sect.get('fontcolor', self.fontcolor) + self.bordercolor = cparser_sect.get('bordercolor', None) def fit_text(self, text: str): global translation_font @@ -66,6 +68,9 @@ class TextConfig: else: filter_str += ":font='{}'".format(self.fontfamily) + if self.bordercolor is not None: + filter_str += ":borderw={}:bordercolor={}".format(self.fontsize / 30, self.bordercolor) + filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text={4}".format( self.fontsize, self.fontcolor, self.x, self.y, ffmpeg_escape_str(text)) From 6876f2cf44e302f272fc15bdc45743d23c30955a Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 2 Nov 2024 14:23:34 +0100 Subject: [PATCH 10/20] make-ffmpeg: Rework config file --- camp2023/config.ini | 8 ++---- cccamp19/config.ini | 8 ++---- denog11/config.ini | 8 ++---- jh19-berlin/config.ini | 8 ++---- jh20-jue/config.ini | 7 +----- jh21-rn/config.ini | 8 ++---- jugendhackt/config.ini | 39 ++++++++++++++++++++---------- make-ffmpeg.py | 55 +++++++++++++++++++++++++----------------- mrmcd2019/config.ini | 8 ++---- vcfb24/config.ini | 2 +- 10 files changed, 73 insertions(+), 78 deletions(-) diff --git a/camp2023/config.ini b/camp2023/config.ini index 2072250..5dbefd6 100644 --- a/camp2023/config.ini +++ b/camp2023/config.ini @@ -1,15 +1,13 @@ -[default] +[meta] schedule = https://pretalx.c3voc.de/camp2023/schedule/export/schedule.xml template = intro.mp4 alpha = false prores = false -fontfile = true -inout = t +inout_type = t [title] in = 16 out = 24 -fontfamily = BeonRegular fontfile = saira.ttf fontsize = 100 fontcolor = #FB48C4 @@ -19,7 +17,6 @@ y = 100 [speaker] in = 16 out = 24 -fontfamily = BeonRegular fontfile = saira.ttf fontsize = 70 fontcolor = #3FFF21 @@ -29,7 +26,6 @@ y = 800 [text] in = 16 out = 24 -fontfamily = BeonRegular fontfile = saira.ttf fontsize = 45 fontcolor = #FB48C4 diff --git a/cccamp19/config.ini b/cccamp19/config.ini index 181caed..0316909 100644 --- a/cccamp19/config.ini +++ b/cccamp19/config.ini @@ -1,15 +1,13 @@ -[default] +[meta] schedule = https://fahrplan.events.ccc.de/camp/2019/Fahrplan/schedule.xml template = cccamp19_talks_intro_1080p.mov alpha = true prores = true -fontfile = true -inout = n +inout_type = n [title] in = 193 out = 324 -fontfamily = fontfile = Marvel-Bold.ttf fontsize = 120 fontcolor = #c68100 @@ -19,7 +17,6 @@ y = 480 [speaker] in = 233 out = 324 -fontfamily = fontfile = Marvel-Regular.ttf fontsize = 70 fontcolor = #c68100 @@ -29,7 +26,6 @@ y = 845 [text] in = 242 out = 324 -fontfamily = fontfile = Marvel-Regular.ttf fontsize = 45 fontcolor = #c68100 diff --git a/denog11/config.ini b/denog11/config.ini index 6f403b5..0716e7e 100644 --- a/denog11/config.ini +++ b/denog11/config.ini @@ -1,15 +1,13 @@ -[default] +[meta] schedule = https://pretalx.denog.de/denog11/schedule/export/schedule.xml template = denog11_intro_template.ts alpha = false prores = false -fontfile = true -inout = n +inout_type = n [title] in = 1 out = 6.5 -fontfamily = fontfile = DejaVuSans.ttf fontsize = 100 fontcolor = #f9cc12 @@ -19,7 +17,6 @@ y = 200 [speaker] in = 2 out = 6.5 -fontfamily = fontfile = DejaVuSans.ttf fontsize = 60 fontcolor = #ffffff @@ -29,7 +26,6 @@ y = 900 [text] in = 3 out = 6.5 -fontfamily = fontfile = DejaVuSans.ttf fontsize = 45 fontcolor = #ffffff diff --git a/jh19-berlin/config.ini b/jh19-berlin/config.ini index 6a8740d..171ea67 100644 --- a/jh19-berlin/config.ini +++ b/jh19-berlin/config.ini @@ -1,15 +1,13 @@ -[default] +[meta] schedule = https://projects.alpaka.space/media/jhber19-schedule.xml template = intro-alpha.mov alpha = true prores = true -fontfile = true -inout = n +inout_type = n [title] in = 175 out = 260 -fontfamily = fontfile = SourceSansPro-Bold.otf fontsize = 90 fontcolor = #ffffff @@ -19,7 +17,6 @@ y = 450 [speaker] in = 175 out = 260 -fontfamily = fontfile = SourceSansPro-Regular.otf fontsize = 36 fontcolor = #ffffff @@ -29,7 +26,6 @@ y = 900 [text] in = 200 out = 250 -fontfamily = fontfile = SourceSansPro-Regular.otf fontsize = 45 fontcolor = #c68100 diff --git a/jh20-jue/config.ini b/jh20-jue/config.ini index 163ca71..7f65b89 100644 --- a/jh20-jue/config.ini +++ b/jh20-jue/config.ini @@ -1,12 +1,10 @@ -[default] +[meta] schedule = https://releasing.c3voc.de/releases/jhjue2020/schedule-jhjue20.xml ; intro_template.ts was derived from a png which was derived from jhjue-20-intro.svg ; ffmpeg -loop 1 -i jh20-jue/jh20-jue-intro.png -ar 48000 -ac 2 -f s16le -i /dev/zero -c:v mpeg2video -pix_fmt:v yuv420p -qscale:v 2 -qmin:v 2 -qmax:v 7 -keyint_min 0 -bf 0 -g 0 -intra:0 -maxrate:0 90M -c:a mp2 -b:a 384k -t 5 jh20-jue/jh20-jue_intro_template.ts template = jh20-jue_intro_template.ts alpha = false prores = false -; enable using a font file -fontfile = true ; in and out time format: t for seconds, n for frame number inout = n @@ -17,7 +15,6 @@ in = 20 ; outframe for totle out = 225 ; title font (either font family or file, see default setting above) -fontfamily = fontfile = ebisu.ttf ; title font size fontsize = 70 @@ -30,7 +27,6 @@ y = 865 [speaker] in = 40 out = 225 -fontfamily = fontfile = ebisu.ttf fontsize = 40 fontcolor = #eeeeee @@ -41,7 +37,6 @@ y = 950 [text] in = 3 out = 4 -fontfamily = fontfile = ebisu.ttf fontsize = 45 fontcolor = #ffffff diff --git a/jh21-rn/config.ini b/jh21-rn/config.ini index a7870db..8c25d4d 100644 --- a/jh21-rn/config.ini +++ b/jh21-rn/config.ini @@ -1,15 +1,13 @@ -[default] +[meta] schedule = https://pretalx.c3voc.de/jugend-hackt-rhein-neckar-2021/schedule/export/schedule.xml template = jh21-rn-template.ts alpha = false prores = false -fontfile = true -inout = t +inout_type = t [title] in = 1 out = 6.5 -fontfamily = fontfile = SourceSansPro-Semibold.ttf fontsize = 85 fontcolor = #ffffff @@ -19,7 +17,6 @@ y = 877 [speaker] in = 2 out = 6.5 -fontfamily = fontfile = SourceSansPro-Semibold.ttf fontsize = 45 fontcolor = #ffffff @@ -29,7 +26,6 @@ y = 954 [text] in = 3 out = 6.5 -fontfamily = fontfile = SourceSansPro-Semibold.ttf fontsize = 45 fontcolor = #ffffff diff --git a/jugendhackt/config.ini b/jugendhackt/config.ini index 2400940..da1b7bd 100644 --- a/jugendhackt/config.ini +++ b/jugendhackt/config.ini @@ -1,39 +1,52 @@ -[default] +[meta] schedule = https://pretalx.c3voc.de/jhhh23/schedule/export/schedule.xml +;; path to background video template = intro-background.ts +;; whether background video uses transparency (needs to be .mov) alpha = false +;; whether background video is prores 4444 prores = false -fontfile = true -inout = t +;; in and out time format: t for seconds, n for frame number +inout_type = t +;; Some font settings can have defaults, which can be overridden in the +;; 'title', 'speaker' and 'text' sections below. +[default] +;; default font (either use 'fontfamily' or 'fontfile') +; fontfamily = arial +fontfile = SourceSansPro-Semibold.ttf +;; default font color +fontcolor = #ffffff + +;; fields for title and speaker names are empty in the template.ts, so we'll render them in via ffmpeg +;; parameters are: +;; - in: start frame/ time +;; - out: end frame/ time +;; - fontfamily: font family +;; - fontfile: font file +;; - fontcolor: font color +;; - fontsize: font size (pixel) +;; - x: horizontal position (top left corner) +;; - y: vertical position (top left corner) [title] in = 1 out = 9.5 -fontfamily = -fontfile = SourceSansPro-Semibold.ttf fontsize = 67 -fontcolor = #ffffff x = 400 y = 870 [speaker] in = 2 out = 9 -fontfamily = -fontfile = SourceSansPro-Semibold.ttf fontsize = 50 -fontcolor = #ffffff x = 400 y = 950 - +;; optional extra text [text] in = 0 out = 0 -fontfamily = -fontfile = SourceSansPro-Semibold.ttf fontsize = 0 -fontcolor = #ffffff x = 0 y = 0 text = '' diff --git a/make-ffmpeg.py b/make-ffmpeg.py index 0fbc353..3b69978 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 # vim: tabstop=4 shiftwidth=4 expandtab +"""See jugendhackt/config.ini for some config file documentation.""" + import os import sys import subprocess @@ -21,33 +23,39 @@ class TextConfig: x: int y: int - use_fontfile: bool - fontfile: str fontfile_path: str fontfamily: str fontsize: int - fontcolor: str = "#ffffff" + fontcolor: str bordercolor: str = None # border is added, if a color is set - def parse(self, cparser_sect, use_fontfile: bool): + def uses_fontfile(self): + return self.fontfile_path is not None + + def parse(self, cparser_sect, default_fontfile, default_fontfamily, default_fontcolor): self.inpoint = cparser_sect.getfloat('in') self.outpoint = cparser_sect.getfloat('out') self.x = cparser_sect.getint('x') self.y = cparser_sect.getint('y') - self.use_fontfile = use_fontfile - if use_fontfile: - self.fontfile = cparser_sect.get('fontfile') - self.fontfile_path = str(PurePath(args.project, self.fontfile).as_posix()) + self.fontcolor = cparser_sect.get('fontcolor', default_fontcolor) + + fontfile = cparser_sect.get('fontfile', default_fontfile) + fontfamily = cparser_sect.get('fontfamily', default_fontfamily) + if fontfile != None and fontfamily is None: + self.fontfile_path = str(PurePath(args.project, fontfile).as_posix()) if not os.path.exists(self.fontfile_path): error("Font file {} in Project Path is missing".format(self.fontfile_path)) + + elif fontfamily != None and fontfile is None: + self.fontfamily = fontfamily + else: - self.fontfamily = cparser_sect.get('fontfamily') + error("Either provide a 'fontfamily' or 'fontfile', not both") self.fontsize = cparser_sect.getint('fontsize') - self.fontcolor = cparser_sect.get('fontcolor', self.fontcolor) self.bordercolor = cparser_sect.get('bordercolor', None) def fit_text(self, text: str): @@ -63,7 +71,7 @@ class TextConfig: filter_str = "drawtext=enable='between({},{},{})'".format( inout_type, self.inpoint, self.outpoint) - if self.use_fontfile: + if self.uses_fontfile(): filter_str += ":fontfile='{}'".format(self.fontfile_path) else: filter_str += ":font='{}'".format(self.fontfamily) @@ -82,7 +90,6 @@ class Config: template_file: str # video background alpha: bool = False prores: bool = False - use_fontfile: bool = False inout_type: str = "t" # in and out time format: t for seconds, n for frame number fileext: str @@ -102,21 +109,25 @@ def parse_config(filename) -> Config: cparser = ConfigParser() cparser.read(filename) - defaults = cparser['default'] - conf.schedule = defaults.get('schedule') - infile = PurePath(args.project, defaults.get('template')) + meta = cparser['meta'] + conf.schedule = meta.get('schedule') + infile = PurePath(args.project, meta.get('template')) conf.template_file = str(infile) - conf.alpha = defaults.getboolean('alpha', conf.alpha) - conf.prores = defaults.getboolean('prores', conf.prores) - conf.use_fontfile = defaults.get('fontfile', conf.use_fontfile) - conf.inout_type = defaults.get('inout', conf.inout_type) + conf.alpha = meta.getboolean('alpha', conf.alpha) + conf.prores = meta.getboolean('prores', conf.prores) + conf.inout_type = meta.get('inout_type', conf.inout_type) + + defaults = cparser['default'] + default_fontfile = defaults.get('fontfile', None) + default_fontfamily = defaults.get('fontfamily', None) + default_fontcolor = defaults.get('fontcolor', "#ffffff") conf.title = TextConfig() - conf.title.parse(cparser['title'], conf.use_fontfile) + conf.title.parse(cparser['title'], default_fontfile, default_fontfamily, default_fontcolor) conf.speaker = TextConfig() - conf.speaker.parse(cparser['speaker'], conf.use_fontfile) + conf.speaker.parse(cparser['speaker'], default_fontfile, default_fontfamily, default_fontcolor) conf.text = TextConfig() - conf.text.parse(cparser['text'], conf.use_fontfile) + conf.text.parse(cparser['text'], default_fontfile, default_fontfamily, default_fontcolor) conf.text_text = cparser['text'].get('text', '') diff --git a/mrmcd2019/config.ini b/mrmcd2019/config.ini index 165753c..30da816 100755 --- a/mrmcd2019/config.ini +++ b/mrmcd2019/config.ini @@ -1,16 +1,14 @@ -[default] +[meta] #schedule = https://talks.mrmcd.net/2019/schedule/export/schedule.xml schedule = file:///home/thorti/git/c3voc/intro-outro-generator/mrmcd2019/schedule.xml template = mrmcd2019.mov alpha = false prores = false -fontfile = true -inout = n +inout_type = n [title] in = 50 out = 225 -fontfamily = fontfile = Jura-Bold.ttf fontsize = 80 fontcolor = #47acda @@ -20,7 +18,6 @@ y = 540 [speaker] in = 75 out = 225 -fontfamily = fontfile = Jura-Regular.ttf fontsize = 50 fontcolor = #094762 @@ -30,7 +27,6 @@ y = 950 [text] in = 242 out = 324 -fontfamily = fontfile = Jura-Regular.ttf fontsize = 45 fontcolor = #c68100 diff --git a/vcfb24/config.ini b/vcfb24/config.ini index 0fb3ad3..fff89ad 100644 --- a/vcfb24/config.ini +++ b/vcfb24/config.ini @@ -1,4 +1,4 @@ -[default] +[meta] schedule = http://vcfb.de/2024/schedule.xml # ffmpeg -loop 1 -i intro.png -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -c:v libx264 -tune stillimage -pix_fmt yuv420p -c:a aac -r 25 -t 10 intro.mp4 template = intro.mp4 From 31f01ca3861bbbb42a231587f7f1a4d287575270 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 2 Nov 2024 17:21:47 +0100 Subject: [PATCH 11/20] make-ffmpeg: Use fit_text from make-ffmpeg-fade (break into lines array) --- camp2023/config.ini | 2 +- cccamp19/config.ini | 2 +- denog11/config.ini | 2 +- jh19-berlin/config.ini | 2 +- jh20-jue/config.ini | 2 +- jh21-rn/config.ini | 2 +- jugendhackt/config.ini | 4 +- make-ffmpeg.py | 84 ++++++++++++++++++++++++++---------------- mrmcd2019/config.ini | 2 +- vcfb24/config.ini | 2 +- 10 files changed, 63 insertions(+), 41 deletions(-) diff --git a/camp2023/config.ini b/camp2023/config.ini index 5dbefd6..e8c7ab6 100644 --- a/camp2023/config.ini +++ b/camp2023/config.ini @@ -31,5 +31,5 @@ fontsize = 45 fontcolor = #FB48C4 x = (w-text_w)/2 y = 1000 -text = 'Chaos Communication Camp 2023' +text = Chaos Communication Camp 2023 diff --git a/cccamp19/config.ini b/cccamp19/config.ini index 0316909..d723d7d 100644 --- a/cccamp19/config.ini +++ b/cccamp19/config.ini @@ -31,5 +31,5 @@ fontsize = 45 fontcolor = #c68100 x = (w-text_w)/2 y = 927 -text = 'chaos communication camp 2019' +text = chaos communication camp 2019 diff --git a/denog11/config.ini b/denog11/config.ini index 0716e7e..89c8096 100644 --- a/denog11/config.ini +++ b/denog11/config.ini @@ -31,5 +31,5 @@ fontsize = 45 fontcolor = #ffffff x = 640 y = 1000 -text = '' +; text = diff --git a/jh19-berlin/config.ini b/jh19-berlin/config.ini index 171ea67..73365a8 100644 --- a/jh19-berlin/config.ini +++ b/jh19-berlin/config.ini @@ -31,5 +31,5 @@ fontsize = 45 fontcolor = #c68100 x = (w-text_w)/2 y = 927 -text = '' +; text = diff --git a/jh20-jue/config.ini b/jh20-jue/config.ini index 7f65b89..d48087f 100644 --- a/jh20-jue/config.ini +++ b/jh20-jue/config.ini @@ -42,7 +42,7 @@ fontsize = 45 fontcolor = #ffffff x = 640 y = 1000 -text = '' +; text = ; build intros via diff --git a/jh21-rn/config.ini b/jh21-rn/config.ini index 8c25d4d..626db55 100644 --- a/jh21-rn/config.ini +++ b/jh21-rn/config.ini @@ -31,5 +31,5 @@ fontsize = 45 fontcolor = #ffffff x = 1920 y = 1080 -text = '' +; text = diff --git a/jugendhackt/config.ini b/jugendhackt/config.ini index da1b7bd..8af8ab6 100644 --- a/jugendhackt/config.ini +++ b/jugendhackt/config.ini @@ -42,11 +42,11 @@ fontsize = 50 x = 400 y = 950 -;; optional extra text +;; optional extra text, comment out "text" field to disable [text] in = 0 out = 0 fontsize = 0 x = 0 y = 0 -text = '' +;text = some additional text diff --git a/make-ffmpeg.py b/make-ffmpeg.py index 3b69978..aa67320 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -16,6 +16,8 @@ from PIL import ImageFont import schedulelib ssl._create_default_https_context = ssl._create_unverified_context +FRAME_WIDTH = 1920 + class TextConfig: inpoint: float @@ -58,31 +60,41 @@ class TextConfig: self.fontsize = cparser_sect.getint('fontsize') self.bordercolor = cparser_sect.get('bordercolor', None) - def fit_text(self, text: str): - global translation_font - translation_font = ImageFont.truetype( + def fit_text(self, text: str) -> list[str]: + if not text: + return [""] + + font = ImageFont.truetype( self.fontfile_path, size=self.fontsize, encoding="unic") # TODO: Make this work with font family as well! - return fit_text(text, (1920-self.x-100)) + return fit_text(text, (FRAME_WIDTH-self.x-100), font) - def get_ffmpeg_filter(self, inout_type: str, text: str): - filter_str = "drawtext=enable='between({},{},{})'".format( - inout_type, self.inpoint, self.outpoint) + def get_ffmpeg_filter(self, inout_type: str, text: list[str]): + if not text: + return "" - if self.uses_fontfile(): - filter_str += ":fontfile='{}'".format(self.fontfile_path) - else: - filter_str += ":font='{}'".format(self.fontfamily) + filter_str = "" + for idx, line in enumerate(text): + filter_str += "drawtext=enable='between({},{},{})'".format( + inout_type, self.inpoint, self.outpoint) - if self.bordercolor is not None: - filter_str += ":borderw={}:bordercolor={}".format(self.fontsize / 30, self.bordercolor) + if self.uses_fontfile(): + filter_str += ":fontfile='{}'".format(self.fontfile_path) + else: + filter_str += ":font='{}'".format(self.fontfamily) - filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text={4}".format( - self.fontsize, self.fontcolor, self.x, self.y, ffmpeg_escape_str(text)) + if self.bordercolor is not None: + filter_str += ":borderw={}:bordercolor={}".format( + self.fontsize / 30, self.bordercolor) - return filter_str + filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text={4}".format( + self.fontsize, self.fontcolor, self.x, self.y + (idx*self.fontsize), ffmpeg_escape_str(line)) + + filter_str += "," + + return filter_str[:-1] class Config: @@ -97,7 +109,7 @@ class Config: title: TextConfig speaker: TextConfig text: TextConfig - text_text: str = "" # additional text + extra_text: str = "" # additional text def parse_config(filename) -> Config: @@ -129,7 +141,7 @@ def parse_config(filename) -> Config: conf.text = TextConfig() conf.text.parse(cparser['text'], default_fontfile, default_fontfamily, default_fontcolor) - conf.text_text = cparser['text'].get('text', '') + conf.extra_text = cparser['text'].get('text', '') conf.fileext = infile.suffix @@ -165,20 +177,29 @@ def event_print(event, message): print("{} – {}".format(describe_event(event), message)) -def fit_text(string: str, frame_width): +def fit_text(string: str, max_width: int, font: ImageFont) -> list[str]: + """Break text into array of strings which fit certain a width (in pixels) for the specified font.""" + split_line = [x.strip() for x in string.split()] - lines = "" - line = "" + lines = [] + w = 0 + line = [] for word in split_line: - left, top, right, bottom = translation_font.getbbox(" ".join([line, word])) - width, height = right - left, bottom - top - if width > (frame_width - (2 * 6)): - lines += line.strip() + "\n" - line = "" + new_line = line + [word.rstrip(':')] + w = font.getlength(" ".join(new_line)) + if w > max_width: + lines.append(' '.join(line)) + line = [] - line += word + " " + line.append(word.rstrip(':')) + + if word.endswith(':'): + lines.append(' '.join(line)) + line = [] + + if line: + lines.append(' '.join(line)) - lines += line.strip() return lines @@ -210,9 +231,10 @@ def enqueue_job(conf: Config, event): title = conf.title.fit_text(event_title) speakers = conf.speaker.fit_text(event_personnames) + extra_text = conf.text.fit_text(conf.extra_text) if args.debug: - print('Title: ', title) + print('Title: ', title) print('Speaker: ', speakers) if platform.system() == 'Windows': @@ -222,7 +244,7 @@ def enqueue_job(conf: Config, event): videofilter = conf.title.get_ffmpeg_filter(conf.inout_type, title) + "," videofilter += conf.speaker.get_ffmpeg_filter(conf.inout_type, speakers) + "," - videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, conf.text_text) + videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, extra_text) cmd = [ffmpeg_path, '-y', '-i', conf.template_file, '-vf', videofilter] @@ -298,7 +320,7 @@ if __name__ == "__main__": persons = ['Thomas Roth', 'Dmitry Nedospasov', 'Josh Datko',] events = [{ 'id': 'debug', - 'title': 'wallet.fail', + 'title': 'wallet.fail and the longest talk title to test if the template is big enough', 'subtitle': 'Hacking the most popular cryptocurrency hardware wallets', 'persons': persons, 'personnames': ', '.join(persons), diff --git a/mrmcd2019/config.ini b/mrmcd2019/config.ini index 30da816..fb74efc 100755 --- a/mrmcd2019/config.ini +++ b/mrmcd2019/config.ini @@ -32,4 +32,4 @@ fontsize = 45 fontcolor = #c68100 x = (w-text_w)/2 y = 927 -text = '' +; text = diff --git a/vcfb24/config.ini b/vcfb24/config.ini index fff89ad..b363273 100644 --- a/vcfb24/config.ini +++ b/vcfb24/config.ini @@ -34,4 +34,4 @@ fontsize = 0 fontcolor = #ffffff x = 0 y = 0 -text = '' +; text = From 8933550f31688ffeb56c1d2ce83a824b0104fcdd Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 2 Nov 2024 17:23:10 +0100 Subject: [PATCH 12/20] make-ffmpeg: Combine with make-ffmpeg-fade --- jugendhackt/config.ini | 2 + make-ffmpeg-fade.py | 326 +---------------------------------------- make-ffmpeg.py | 20 ++- requirements.txt | 2 +- vcfb24/config.ini | 10 +- 5 files changed, 26 insertions(+), 334 deletions(-) diff --git a/jugendhackt/config.ini b/jugendhackt/config.ini index 8af8ab6..4f507cd 100644 --- a/jugendhackt/config.ini +++ b/jugendhackt/config.ini @@ -8,6 +8,8 @@ alpha = false prores = false ;; in and out time format: t for seconds, n for frame number inout_type = t +;; fade-in duration (seconds), leave out or set to zero to disable +;fade_duration = 0.5 ;; Some font settings can have defaults, which can be overridden in the ;; 'title', 'speaker' and 'text' sections below. diff --git a/make-ffmpeg-fade.py b/make-ffmpeg-fade.py index 976c858..3c1eecd 100755 --- a/make-ffmpeg-fade.py +++ b/make-ffmpeg-fade.py @@ -1,327 +1,5 @@ #!/usr/bin/env python3 # vim: tabstop=4 shiftwidth=4 expandtab -import os -import sys -import subprocess -import renderlib -import schedulelib -import argparse -import shlex -from PIL import ImageFont -from configparser import ConfigParser -import json - -# Parse arguments -parser = argparse.ArgumentParser( - description='C3VOC Intro-Outro-Generator - Variant which renders only using video filters in ffmpeg', - usage="./make-ffmpeg.py yourproject/", - formatter_class=argparse.RawTextHelpFormatter) - -parser.add_argument('project', action="store", metavar='Project folder', type=str, help=''' - Path to your project folder - ''') - -parser.add_argument('--debug', action="store_true", default=False, help=''' - Run script in debug mode and render with placeholder texts, - not parsing or accessing a schedule. - This argument must not be used together with --id - Usage: ./make-ffmpeg.py yourproject/ --debug - ''') - -parser.add_argument('--id', dest='ids', nargs='+', action="store", type=int, help=''' - Only render the given ID(s) from your projects schedule. - This argument must not be used together with --debug - Usage: ./make-adobe-after-effects.py yourproject/ --id 4711 0815 4223 1337 - ''') - -parser.add_argument('--room', dest='rooms', nargs='+', action="store", type=str, help=''' - Only render the given room(s) from your projects schedule. - This argument must not be used together with --debug - Usage: ./make-adobe-after-effects.py yourproject/ --room "HfG_Studio" "ZKM_Vortragssaal" - ''') - -parser.add_argument('--skip', nargs='+', action="store", type=str, help=''' - Skip ID(s) not needed to be rendered. - Usage: ./make-ffmpeg.py yourproject/ --skip 4711 0815 4223 1337 - ''') - -parser.add_argument('--force', action="store_true", default=False, help=''' - Force render if file exists. - ''') - -args = parser.parse_args() - -if (args.skip is None): - args.skip = [] - - -def headline(str): - print("##################################################") - print(str) - print("##################################################") - print() - - -def error(str): - headline(str) - parser.print_help() - sys.exit(1) - - -cparser = ConfigParser() -cparser.read(os.path.join(os.path.dirname(args.project), 'config.ini')) -template = cparser['default']['template'] -alpha = cparser['default']['alpha'] -prores = cparser['default']['prores'] - -fade_duration = 0.5 - -title_in = float(cparser['title']['in']) -title_out = float(cparser['title']['out']) -title_duration = title_out - title_in -title_font = cparser['title']['font'] -title_fontsize = int(cparser['title']['fontsize']) -title_fontcolor = cparser['title']['fontcolor'] -title_x = int(cparser['title']['x']) -title_y = int(cparser['title']['y']) - -speaker_in = float(cparser['speaker']['in']) -speaker_out = float(cparser['speaker']['out']) -speaker_duration = speaker_out - speaker_in -speaker_font = cparser['speaker']['font'] -speaker_fontsize = int(cparser['speaker']['fontsize']) -speaker_fontcolor = cparser['speaker']['fontcolor'] -speaker_x = int(cparser['speaker']['x']) -speaker_y = int(cparser['speaker']['y']) - -text_in = float(cparser['text']['in']) -text_out = float(cparser['text']['out']) -text_duration = text_out - text_in -text_font = cparser['text']['font'] -text_fontsize = int(cparser['text']['fontsize']) -text_fontcolor = cparser['text']['fontcolor'] -text_x = int(cparser['text']['x']) -text_y = int(cparser['text']['y']) -text_text = cparser['text']['text'] - -font_t = os.path.join(os.path.dirname(args.project), title_font) -font_s = os.path.join(os.path.dirname(args.project), speaker_font) -font_tt = os.path.join(os.path.dirname(args.project), text_font) - -fileformat = os.path.splitext(template)[1] -infile = os.path.join(os.path.dirname(args.project), template) - -schedule = cparser['default']['schedule'] - -if not (os.path.exists(os.path.join(args.project, template))): - error("Template file {} in Project Path is missing".format(template)) - -for ffile in (title_font, speaker_font, text_font): - if not (os.path.exists(os.path.join(args.project, ffile))): - error("Font file {} in Project Path is missing".format(ffile)) - -if not (os.path.exists(os.path.join(args.project, 'config.ini'))): - error("config.ini file in Project Path is missing") - -if alpha == 'true' and not fileformat == '.mov': - error("Alpha can only be rendered with .mov source files") - -if not args.project: - error("The Project Path is a required argument") - -if not args.debug and not schedule: - error("Either specify --debug or supply a schedule in config.ini") - -if args.debug: - persons = ['Thomas Roth', 'Dmitry Nedospasov', 'Josh Datko'] - events = [{ - 'id': 'debug', - 'title': 'wallet.fail', - 'subtitle': 'Hacking the most popular cryptocurrency hardware wallets', - 'persons': persons, - 'personnames': ', '.join(persons), - 'room': 'Borg', - }] - -else: - events = list(schedulelib.events(schedule)) - - -def describe_event(event): - return "#{}: {}".format(event['id'], event['title']) - - -def event_print(event, message): - print("{} – {}".format(describe_event(event), message)) - - -def fmt_command(command, **kwargs): - args = {} - for key, value in kwargs.items(): - args[key] = shlex.quote(value) - - command = command.format(**args) - return shlex.split(command) - - -def run(command, **kwargs): - return subprocess.check_call( - fmt_command(command, **kwargs), - stderr=subprocess.STDOUT, - stdout=subprocess.DEVNULL) - - -def fit_text(string: str, frame_width): - split_line = [x.strip() for x in string.split()] - lines = [] - w = 0 - line_num = 0 - line = [] - for word in split_line: - new_line = line + [word.rstrip(':')] - w, _ = translation_font.getsize(" ".join(new_line)) - print(w, new_line) - if w > frame_width: - print("too wide, breaking", line) - lines.append(' '.join(line)) - line = [] - - line.append(word.rstrip(':')) - - if word.endswith(':'): - print(':, breaking', line) - lines.append(' '.join(line)) - line = [] - - if line: - lines.append(' '.join(line)) - return lines - - -def fit_title(string: str): - global translation_font - translation_font = ImageFont.truetype(font_t, size=title_fontsize-10, encoding="unic") - title = fit_text(string, 1080) - - return title - - -def fit_speaker(string: str): - global translation_font - translation_font = ImageFont.truetype(font_s, size=speaker_fontsize-10, encoding="unic") - speaker = fit_text(string, 1080) - - return speaker - - -def enqueue_job(event): - event_id = str(event['id']) - if event_id in args.skip: - event_print(event, "skipping " + str(event['id'])) - return - if (os.path.exists(os.path.join(args.project, event_id + '.ts')) or os.path.exists(os.path.join(args.project, event_id + '.mov'))) and not args.force: - event_print(event, "file exist, skipping " + str(event['id'])) - return - - event_title = str(event['title']) - event_personnames = str(event['personnames']) - event_title = event_title.replace('"', '') - event_title = event_title.replace('\'', '') - event_personnames = event_personnames.replace('"', '') - - t = fit_title(event_title) - s = fit_speaker(event_personnames) - print(s) - - if args.debug: - print('Title: ', t) - print('Speaker: ', s) - - outfile = os.path.join(os.path.dirname(args.project), event_id + '.ts') - - videofilter = "" - for idx, line in enumerate(t): - videofilter += "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text='{text}':".format( - fontfile=font_t, - fontsize=title_fontsize, - fontcolor=title_fontcolor, - x=title_x, - y=title_y + (idx * title_fontsize), - text=line) - videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))',".format( - fade_in_start_time=title_in, - fade_in_end_time=title_in + fade_duration, - fade_out_start_time=title_in + fade_duration + title_duration, - fade_out_end_time=title_in + fade_duration + title_duration + fade_duration, - fade_duration=fade_duration - ) - - for idx, line in enumerate(s): - videofilter += "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text='{text}':".format( - fontfile=font_s, - fontsize=speaker_fontsize, - fontcolor=speaker_fontcolor, - x=speaker_x, - y=speaker_y + (idx * speaker_fontsize), - text=line) - videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))',".format( - fade_in_start_time=speaker_in, - fade_in_end_time=speaker_in + fade_duration, - fade_out_start_time=speaker_in + fade_duration + speaker_duration, - fade_out_end_time=speaker_in + fade_duration + speaker_duration + fade_duration, - fade_duration=fade_duration - ) - - if fileformat == '.mov': - if alpha == 'true': - if prores == 'true': - cmd = 'ffmpeg -y -i "{0}" -vf "{1}" -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -shortest -movflags faststart -f mov "{2}"'.format( - infile, videofilter, outfile) - else: - cmd = 'ffmpeg -y -i "{0}" -vf "{1}" -shortest -c:v qtrle -movflags faststart -f mov "{2}"'.format( - infile, videofilter, outfile) - else: - cmd = 'ffmpeg -y -i "{0}" -vf "{1}" -map 0:0 -c:v mpeg2video -q:v 2 -aspect 16:9 -map 0:1 -c:a mp2 -b:a 384k -shortest -f mpegts "{2}"'.format( - infile, videofilter, outfile) - else: - cmd = 'ffmpeg -y -i "{0}" -vf "{1}" -map 0:0 -c:v mpeg2video -pix_fmt:v yuv420p -qscale:v 2 -qmin:v 2 -qmax:v 7 -keyint_min 0 -bf 0 -g 0 -maxrate:0 90M -aspect 16:9 -map 0:1 -c:a mp2 -b:a 384k -shortest -f mpegts "{2}"'.format( - infile, videofilter, outfile) - - if args.debug: - print(cmd) - - run(cmd) - - return event_id - - -if args.ids: - if len(args.ids) == 1: - print("enqueuing {} job".format(len(args.ids))) - else: - print("enqueuing {} jobs".format(len(args.ids))) -else: - if len(events) == 1: - print("enqueuing {} job".format(len(events))) - else: - print("enqueuing {} jobs".format(len(events))) - - -for event in events: - if args.ids and event['id'] not in args.ids: - continue - - if args.rooms and event['room'] not in args.rooms: - print("skipping room %s (%s)" % (event['room'], event['title'])) - continue - - event_print(event, "enqueued as " + str(event['id'])) - - job_id = enqueue_job(event) - if not job_id: - event_print(event, "job was not enqueued successfully, skipping postprocessing") - continue - - -print('all done') +print("ERROR: The functionality of this script was added to 'make-ffmpeg.py'!") +print("Specify meta.fade_duration = 0.5 in the config.ini for the same effect.") diff --git a/make-ffmpeg.py b/make-ffmpeg.py index aa67320..68d2bf2 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -71,10 +71,11 @@ class TextConfig: return fit_text(text, (FRAME_WIDTH-self.x-100), font) - def get_ffmpeg_filter(self, inout_type: str, text: list[str]): + def get_ffmpeg_filter(self, inout_type: str, fade_time: float, text: list[str]): if not text: return "" + text_duration = self.outpoint - self.inpoint filter_str = "" for idx, line in enumerate(text): filter_str += "drawtext=enable='between({},{},{})'".format( @@ -92,6 +93,14 @@ class TextConfig: filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text={4}".format( self.fontsize, self.fontcolor, self.x, self.y + (idx*self.fontsize), ffmpeg_escape_str(line)) + if fade_time > 0: + filter_str += ":alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))'".format( + fade_in_start_time=self.inpoint, + fade_in_end_time=self.inpoint + fade_time, + fade_out_start_time=self.inpoint + fade_time + text_duration, + fade_out_end_time=self.inpoint + fade_time + text_duration + fade_time, + fade_duration=fade_time) + filter_str += "," return filter_str[:-1] @@ -103,6 +112,7 @@ class Config: alpha: bool = False prores: bool = False inout_type: str = "t" # in and out time format: t for seconds, n for frame number + fade_duration: float = 0 # fade duration in seconds, 0 to disable fileext: str @@ -128,6 +138,7 @@ def parse_config(filename) -> Config: conf.alpha = meta.getboolean('alpha', conf.alpha) conf.prores = meta.getboolean('prores', conf.prores) conf.inout_type = meta.get('inout_type', conf.inout_type) + conf.fade_duration = meta.getfloat('fade_duration', conf.fade_duration) defaults = cparser['default'] default_fontfile = defaults.get('fontfile', None) @@ -242,9 +253,10 @@ def enqueue_job(conf: Config, event): else: ffmpeg_path = 'ffmpeg' - videofilter = conf.title.get_ffmpeg_filter(conf.inout_type, title) + "," - videofilter += conf.speaker.get_ffmpeg_filter(conf.inout_type, speakers) + "," - videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, extra_text) + videofilter = conf.title.get_ffmpeg_filter(conf.inout_type, conf.fade_duration, title) + "," + videofilter += conf.speaker.get_ffmpeg_filter(conf.inout_type, + conf.fade_duration, speakers) + "," + videofilter += conf.text.get_ffmpeg_filter(conf.inout_type, conf.fade_duration, extra_text) cmd = [ffmpeg_path, '-y', '-i', conf.template_file, '-vf', videofilter] diff --git a/requirements.txt b/requirements.txt index 181482a..f8a9b74 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -pillow +pillow>=8.0.0 cssutils==1.0.2 lxml==4.9.1 svg.path==4.0.2 diff --git a/vcfb24/config.ini b/vcfb24/config.ini index b363273..712eff6 100644 --- a/vcfb24/config.ini +++ b/vcfb24/config.ini @@ -4,13 +4,13 @@ schedule = http://vcfb.de/2024/schedule.xml template = intro.mp4 alpha = false prores = false -fontfile = true -inout = t +inout_type = t +fade_duration = 0.5 [title] in = 1 out = 9.5 -font = Computerfont.ttf +fontfile = Computerfont.ttf fontsize = 100 fontcolor = #ffffff x = 85 @@ -19,7 +19,7 @@ y = 122 [speaker] in = 2 out = 9 -font = SourceSansPro-Semibold.ttf +fontfile = SourceSansPro-Semibold.ttf fontsize = 65 fontcolor = #ffffff x = 85 @@ -29,7 +29,7 @@ y = 861 [text] in = 0 out = 0 -font = Computerfont.ttf +fontfile = Computerfont.ttf fontsize = 0 fontcolor = #ffffff x = 0 From ca224b9d84ac376149a009aaa30304a9ec9c0fb3 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 2 Nov 2024 20:16:06 +0100 Subject: [PATCH 13/20] make-ffmpeg: Remove fontfamily option as it doesn't work --- jh20-jue/config.ini | 20 ++++++++++---------- jugendhackt/config.ini | 4 +--- make-ffmpeg.py | 40 +++++++++++----------------------------- 3 files changed, 22 insertions(+), 42 deletions(-) diff --git a/jh20-jue/config.ini b/jh20-jue/config.ini index d48087f..05878cf 100644 --- a/jh20-jue/config.ini +++ b/jh20-jue/config.ini @@ -8,26 +8,28 @@ prores = false ; in and out time format: t for seconds, n for frame number inout = n -; fields for title and speaker names are empty in the template.ts, so we'll render them in via ffmpeg +;; Some font settings can have defaults, which can be overridden in the +;; 'title', 'speaker' and 'text' sections below. +[default] +;; default font +fontfile = ebisu.ttf +;; default font color +fontcolor = #ffffff + +;; fields for title and speaker names are empty in the template.ts, so we'll render them in via ffmpeg [title] ; inframe for title in = 20 -; outframe for totle +; outframe for title out = 225 -; title font (either font family or file, see default setting above) -fontfile = ebisu.ttf ; title font size fontsize = 70 -; title color -fontcolor = #ffffff -; title position from upper left corner x = 600 y = 865 [speaker] in = 40 out = 225 -fontfile = ebisu.ttf fontsize = 40 fontcolor = #eeeeee x = 600 @@ -37,9 +39,7 @@ y = 950 [text] in = 3 out = 4 -fontfile = ebisu.ttf fontsize = 45 -fontcolor = #ffffff x = 640 y = 1000 ; text = diff --git a/jugendhackt/config.ini b/jugendhackt/config.ini index 4f507cd..94180a5 100644 --- a/jugendhackt/config.ini +++ b/jugendhackt/config.ini @@ -14,8 +14,7 @@ inout_type = t ;; Some font settings can have defaults, which can be overridden in the ;; 'title', 'speaker' and 'text' sections below. [default] -;; default font (either use 'fontfamily' or 'fontfile') -; fontfamily = arial +;; default font fontfile = SourceSansPro-Semibold.ttf ;; default font color fontcolor = #ffffff @@ -24,7 +23,6 @@ fontcolor = #ffffff ;; parameters are: ;; - in: start frame/ time ;; - out: end frame/ time -;; - fontfamily: font family ;; - fontfile: font file ;; - fontcolor: font color ;; - fontsize: font size (pixel) diff --git a/make-ffmpeg.py b/make-ffmpeg.py index 68d2bf2..94d1514 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -26,8 +26,6 @@ class TextConfig: y: int fontfile_path: str - fontfamily: str - fontsize: int fontcolor: str bordercolor: str = None # border is added, if a color is set @@ -35,7 +33,7 @@ class TextConfig: def uses_fontfile(self): return self.fontfile_path is not None - def parse(self, cparser_sect, default_fontfile, default_fontfamily, default_fontcolor): + def parse(self, cparser_sect, default_fontfile, default_fontcolor): self.inpoint = cparser_sect.getfloat('in') self.outpoint = cparser_sect.getfloat('out') self.x = cparser_sect.getint('x') @@ -44,18 +42,10 @@ class TextConfig: self.fontcolor = cparser_sect.get('fontcolor', default_fontcolor) fontfile = cparser_sect.get('fontfile', default_fontfile) - fontfamily = cparser_sect.get('fontfamily', default_fontfamily) - if fontfile != None and fontfamily is None: - self.fontfile_path = str(PurePath(args.project, fontfile).as_posix()) + self.fontfile_path = str(PurePath(args.project, fontfile).as_posix()) - if not os.path.exists(self.fontfile_path): - error("Font file {} in Project Path is missing".format(self.fontfile_path)) - - elif fontfamily != None and fontfile is None: - self.fontfamily = fontfamily - - else: - error("Either provide a 'fontfamily' or 'fontfile', not both") + if not os.path.exists(self.fontfile_path): + error("Font file {} in Project Path is missing".format(self.fontfile_path)) self.fontsize = cparser_sect.getint('fontsize') self.bordercolor = cparser_sect.get('bordercolor', None) @@ -67,8 +57,6 @@ class TextConfig: font = ImageFont.truetype( self.fontfile_path, size=self.fontsize, encoding="unic") - # TODO: Make this work with font family as well! - return fit_text(text, (FRAME_WIDTH-self.x-100), font) def get_ffmpeg_filter(self, inout_type: str, fade_time: float, text: list[str]): @@ -78,21 +66,16 @@ class TextConfig: text_duration = self.outpoint - self.inpoint filter_str = "" for idx, line in enumerate(text): - filter_str += "drawtext=enable='between({},{},{})'".format( - inout_type, self.inpoint, self.outpoint) + filter_str += "drawtext=enable='between({},{},{})':x={}:y={}".format( + inout_type, self.inpoint, self.outpoint, self.x, self.y + (idx*self.fontsize)) - if self.uses_fontfile(): - filter_str += ":fontfile='{}'".format(self.fontfile_path) - else: - filter_str += ":font='{}'".format(self.fontfamily) + filter_str += ":fontfile='{}':fontsize={}:fontcolor={}:text={}".format( + self.fontfile_path, self.fontsize, self.fontcolor, ffmpeg_escape_str(line)) if self.bordercolor is not None: filter_str += ":borderw={}:bordercolor={}".format( self.fontsize / 30, self.bordercolor) - filter_str += ":fontsize={0}:fontcolor={1}:x={2}:y={3}:text={4}".format( - self.fontsize, self.fontcolor, self.x, self.y + (idx*self.fontsize), ffmpeg_escape_str(line)) - if fade_time > 0: filter_str += ":alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))'".format( fade_in_start_time=self.inpoint, @@ -142,15 +125,14 @@ def parse_config(filename) -> Config: defaults = cparser['default'] default_fontfile = defaults.get('fontfile', None) - default_fontfamily = defaults.get('fontfamily', None) default_fontcolor = defaults.get('fontcolor', "#ffffff") conf.title = TextConfig() - conf.title.parse(cparser['title'], default_fontfile, default_fontfamily, default_fontcolor) + conf.title.parse(cparser['title'], default_fontfile, default_fontcolor) conf.speaker = TextConfig() - conf.speaker.parse(cparser['speaker'], default_fontfile, default_fontfamily, default_fontcolor) + conf.speaker.parse(cparser['speaker'], default_fontfile, default_fontcolor) conf.text = TextConfig() - conf.text.parse(cparser['text'], default_fontfile, default_fontfamily, default_fontcolor) + conf.text.parse(cparser['text'], default_fontfile, default_fontcolor) conf.extra_text = cparser['text'].get('text', '') From 2451c0f25f66662ee5b17d1d17247b7cd0c31afc Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sat, 2 Nov 2024 21:49:30 +0100 Subject: [PATCH 14/20] bump some versions in requirements.txt - lxml 5 works - svg.path has no breaking changes according to change log - cssutils has a v2, but didn't find a changelog --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index f8a9b74..efa6214 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ pillow>=8.0.0 cssutils==1.0.2 -lxml==4.9.1 -svg.path==4.0.2 -Wand==0.6.5 +lxml~=5.3 +svg.path~=6.0 +Wand~=0.6.5 From d8c198f98496bb910b4c872ef888acf3d687e0e0 Mon Sep 17 00:00:00 2001 From: Lukas Schauer Date: Tue, 12 Nov 2024 11:38:27 +0100 Subject: [PATCH 15/20] god2024 --- god2024/__init__.py | 145 ++++++++++++++++++++++++++++++++++++++ god2024/artwork/intro.svg | 101 ++++++++++++++++++++++++++ god2024/artwork/outro.svg | 131 ++++++++++++++++++++++++++++++++++ god2024/artwork/pause.svg | 78 ++++++++++++++++++++ 4 files changed, 455 insertions(+) create mode 100644 god2024/__init__.py create mode 100644 god2024/artwork/intro.svg create mode 100644 god2024/artwork/outro.svg create mode 100644 god2024/artwork/pause.svg diff --git a/god2024/__init__.py b/god2024/__init__.py new file mode 100644 index 0000000..c04c938 --- /dev/null +++ b/god2024/__init__.py @@ -0,0 +1,145 @@ +#!/usr/bin/python3 + +from renderlib import * +from schedulelib import * +from easing import * + +# URL to Schedule-XML +scheduleUrl = 'https://import.c3voc.de/schedule/god2024.xml?showall=yes' + +titlemap = { + +} + +def introFrames(p): + givenFrame = 0 + + nr = p['$id']; + + # 1 Sekunden nix + frames = 1*fps + for i in range(0, frames): + givenFrame += 1 + yield ( + ('bg', 'attr', '{http://www.w3.org/1999/xlink}href', "given-frames/frame%04d.png" % (givenFrame)), + ('layer1', 'style', 'opacity', "%.4f" % 0), # nix + # ('text', 'attr', 'transform', 'translate(%.4f, 0)' % easeOutQuad(i, move, -move, frames)), + ) + + # 1 Sekunde Text Fadein + frames = 1*fps + for i in range(0, frames): + givenFrame += 1 + yield ( + ('bg', 'attr', '{http://www.w3.org/1999/xlink}href', "given-frames/frame%04d.png" % (givenFrame)), + ('layer1', 'style', 'opacity', "%.4f" % easeLinear(i, 0, 1, frames)), + # ('text', 'attr', 'transform', 'translate(%.4f, 0)' % easeOutQuad(i, move, -move, frames)), + ) + + # 5 Sekunden Text + frames = 5*fps + for i in range(0, frames): + givenFrame += 1 + yield ( + ('bg', 'attr', '{http://www.w3.org/1999/xlink}href', "given-frames/frame%04d.png" % (givenFrame)), + ('layer1', 'style', 'opacity', "%.4f" %1), + # ('text', 'attr', 'transform', 'translate(%.4f, 0)' % easeOutQuad(i, move, -move, frames)), + ) + +def outroFrames(p): + xml = etree.parse('god2024/artwork/outro.svg').getroot() + + frames = int(5*fps) + for i in range(0, frames): + yield () + +def pauseFrames(p): + # 1 sekunden fade in + frames = 1*fps + for i in range(0, frames): + yield ( + ('text1', 'style', 'opacity', "%.4f" % easeLinear(i, 0, 1, frames)), + ) + + # 1 sekunde sehen + for i in range(0, frames): + yield ( + ('text1', 'style', 'opacity', "%.4f" % 1), + ) + + # 1 sekunde fadeout + for i in range(0, frames): + yield ( + ('text1', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)), + ) + + # 1 sekunde bild + for i in range(0, frames): + yield ( + ('text1', 'style', 'opacity', "%.4f" % 0), + ) + +def debug(): + render( + 'intro.svg', + '../intro.ts', + introFrames, + { + '$id': 65, + '$title': 'OWASP Juice Shop 10th anniversary: Is it still fresh?'.upper(), + '$subtitle': '', + '$personnames': 'Jannik Hollenbach'.upper(), + #'only_render_frame': 353 + 'only_rerender_frames_after': 225 + } + ) + + # render( + # 'pause.svg', + # '../pause.ts', + # pauseFrames + # ) + +def tasks(queue, args, id_list, skip_list): + if not 'outro' in skip_list: + # place a task for the outro into the queue + queue.put(Rendertask( + infile = 'outro.svg', + outfile = 'outro.ts', + sequence = outroFrames + )) + + if not 'pause' in skip_list: + # place the pause-sequence into the queue + queue.put(Rendertask( + infile = 'pause.svg', + outfile = 'pause.ts', + sequence = pauseFrames + )) + + # iterate over all events extracted from the schedule xml-export + for event in events(scheduleUrl, titlemap): + + # skip events which will not be recorded + if event['room'] not in ('Da Capo',) or event['track'] == 'Nomnom': + print("skipping room %s (%s [%s])" % (event['room'], event['title'], event['id'])) + continue + + # when id_list is not empty, only render events which are in id_list + if id_list and int(event['id']) not in id_list: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + + # generate a task description and put them into the queue + queue.put(Rendertask( + infile = 'intro.svg', + outfile = str(event['id']) + ".ts", + sequence = introFrames, + parameters = { + '$id': event['id'], + '$title': event['title'].upper(), + '$subtitle': event['subtitle'], + '$personnames': event['personnames'].upper(), + } + )) + diff --git a/god2024/artwork/intro.svg b/god2024/artwork/intro.svg new file mode 100644 index 0000000..3767d64 --- /dev/null +++ b/god2024/artwork/intro.svg @@ -0,0 +1,101 @@ + + + +image/svg+xml$title$personnames diff --git a/god2024/artwork/outro.svg b/god2024/artwork/outro.svg new file mode 100644 index 0000000..44344e4 --- /dev/null +++ b/god2024/artwork/outro.svg @@ -0,0 +1,131 @@ + + + +image/svg+xmlCreative Commons Attribution 4.0 International http://creativecommons.org/licenses/by/4.0/ diff --git a/god2024/artwork/pause.svg b/god2024/artwork/pause.svg new file mode 100644 index 0000000..6dd0f4e --- /dev/null +++ b/god2024/artwork/pause.svg @@ -0,0 +1,78 @@ + + + +image/svg+xmlPAUSE From 5661e690de70e2f1ad12e00eb5dffbdcaba00daf Mon Sep 17 00:00:00 2001 From: Lukas Schauer Date: Tue, 12 Nov 2024 12:43:11 +0100 Subject: [PATCH 16/20] god2024 changes --- god2024/artwork/intro.svg | 26 +++++++++++++------------- god2024/artwork/outro.svg | 12 ++++++------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/god2024/artwork/intro.svg b/god2024/artwork/intro.svg index 3767d64..4a79ff0 100644 --- a/god2024/artwork/intro.svg +++ b/god2024/artwork/intro.svg @@ -33,13 +33,13 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1202" + inkscape:window-width="2211" inkscape:window-height="1330" id="namedview25" showgrid="false" - inkscape:zoom="0.6364738" - inkscape:cx="1139.0885" - inkscape:cy="1055.0316" + inkscape:zoom="1.8226104" + inkscape:cx="1088.823" + inkscape:cy="624.10487" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" @@ -68,29 +68,29 @@ style="opacity:1;display:inline">$title$title$personnames Date: Thu, 21 Nov 2024 19:08:46 +0100 Subject: [PATCH 17/20] make-apple-motion: add --no-cleanup flag --- make-apple-motion.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/make-apple-motion.py b/make-apple-motion.py index 1d4c631..079908a 100755 --- a/make-apple-motion.py +++ b/make-apple-motion.py @@ -57,6 +57,10 @@ parser.add_argument('--num-audio-streams', dest='naudio', type=int, default=1, h number of audio-streams to generate. defaults to 1 ''') +parser.add_argument('--no-cleanup', action='store_true', help=''' + keep temp-dir for debugging purposes + ''') + args = parser.parse_args() @@ -250,5 +254,9 @@ while len(active_jobs) > 0: finalize_job(job_id, event) -print('all done, cleaning up ' + tempdir.name) -tempdir.cleanup() +if args.no_cleanup: + print('all done, *NOT* cleaning up, *TEMPFILES REMAIN* in ' + tempdir.name) + +else: + print('all done, cleaning up ' + tempdir.name) + tempdir.cleanup() From 41db29d24b1c694a00ae3dcd3083b2b18bef2c3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=B6rner?= Date: Thu, 21 Nov 2024 19:19:58 +0100 Subject: [PATCH 18/20] make-apple-motion: add --setting-path flag and auto-detect absolute path to default .compressorsetting file --- make-apple-motion.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/make-apple-motion.py b/make-apple-motion.py index 079908a..4262030 100755 --- a/make-apple-motion.py +++ b/make-apple-motion.py @@ -61,6 +61,12 @@ parser.add_argument('--no-cleanup', action='store_true', help=''' keep temp-dir for debugging purposes ''') +parser.add_argument('--setting-path', default='hd1080p.compressorsetting', help=''' + filename in the script-dir (where this python script resides), + the work-dir (where the .motn-file resides) or absolute path to + a .compressorsetting file + ''') + args = parser.parse_args() @@ -105,9 +111,22 @@ def describe_event(event): def event_print(event, message): print("{} – {}".format(describe_event(event), message)) +def find_settingpath(): + artwork_dir = os.path.dirname(args.motn) + setting_path = os.path.join(artwork_dir, args.setting_path) + if os.path.exists(setting_path): + return setting_path + + setting_path = os.path.join(os.path.dirname(__file__), args.setting_path) + if os.path.exists(setting_path): + return setting_path + + return args.setting_path + tempdir = tempfile.TemporaryDirectory() print('working in ' + tempdir.name) +settingpath = find_settingpath() def fmt_command(command, **kwargs): @@ -148,10 +167,11 @@ def enqueue_job(event): fp.write(xmlstr) compressor_info = run_output( - '/Applications/Compressor.app/Contents/MacOS/Compressor -batchname {batchname} -jobpath {jobpath} -settingpath hd1080p.compressorsetting -locationpath {locationpath}', + '/Applications/Compressor.app/Contents/MacOS/Compressor -batchname {batchname} -jobpath {jobpath} -settingpath {settingpath} -locationpath {locationpath}', batchname=describe_event(event), jobpath=work_doc, - locationpath=intermediate_clip) + locationpath=intermediate_clip, + settingpath=settingpath) match = re.search(r"", compressor_info) if not match: From a9cbfc5eb3b0eaedf997e70bd9c3820ad93eedb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=B6rner?= Date: Thu, 21 Nov 2024 19:26:10 +0100 Subject: [PATCH 19/20] make-apple-motion: add --snapshot-sec to automatically generate a snapshot of the final clip for inspection or as thumbnail --- make-apple-motion.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/make-apple-motion.py b/make-apple-motion.py index 4262030..f4317c4 100755 --- a/make-apple-motion.py +++ b/make-apple-motion.py @@ -61,6 +61,10 @@ parser.add_argument('--no-cleanup', action='store_true', help=''' keep temp-dir for debugging purposes ''') +parser.add_argument('--snapshot-sec', type=int, default=3, help=''' + number of seconds into the final clip when to take a snapshot (for inspection purposes or as thumbnail) + ''') + parser.add_argument('--setting-path', default='hd1080p.compressorsetting', help=''' filename in the script-dir (where this python script resides), the work-dir (where the .motn-file resides) or absolute path to @@ -226,6 +230,7 @@ def finalize_job(job_id, event): intermediate_clip = os.path.join(tempdir.name, event_id + '.mov') final_clip = os.path.join(os.path.dirname(args.motn), event_id + '.ts') copy_clip = os.path.join(os.path.dirname(args.motn), event_id + '.mov') + snapshot_file = os.path.join(os.path.dirname(args.motn), event_id + '.png') shutil.copy(intermediate_clip, copy_clip) @@ -235,6 +240,11 @@ def finalize_job(job_id, event): vcodec=args.vcodec, acodec=args.acodec) + run('ffmpeg -y -hide_banner -loglevel error -i {input} -ss {snapshot_sec} -frames:v 1 -vf scale="iw*sar:ih" -f image2 -y -c png {output}', + input=intermediate_clip, + output=snapshot_file, + snapshot_sec=str(args.snapshot_sec)) + event_print(event, "finalized intro to " + final_clip) From 21a8e014ef3911201f017833cc8fc2fa9f3b288b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=B6rner?= Date: Thu, 21 Nov 2024 19:32:20 +0100 Subject: [PATCH 20/20] make-apple-motion: replace xml.sax.saxutils.xmlescape with custom routine, which also escapes quotes xml.sax.saxutils.xmlescape is only a str.replace in a trencoat anyways. --- make-apple-motion.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/make-apple-motion.py b/make-apple-motion.py index f4317c4..c2940e9 100755 --- a/make-apple-motion.py +++ b/make-apple-motion.py @@ -11,8 +11,6 @@ import sys import os import re -from xml.sax.saxutils import escape as xmlescape - # Parse arguments parser = argparse.ArgumentParser( description='C3VOC Intro-Outro-Generator - Variant to use with apple Motion Files', @@ -155,6 +153,13 @@ def run_output(command, **kwargs): os.system(f'{cmd} >{t.name} 2>&1') return t.read().decode('utf-8') +def xmlescape(xml): + xml = xml.replace("&", "&") + xml = xml.replace("<", "<") + xml = xml.replace(">", ">") + xml = xml.replace("\"", """) + xml = xml.replace("'", "'") + return xml def enqueue_job(event): event_id = str(event['id'])