From 6476846992c0e9edffa1cfdc65bb23eed1083192 Mon Sep 17 00:00:00 2001 From: derchris Date: Fri, 11 Aug 2023 01:04:00 +0200 Subject: [PATCH 1/9] update make-ffmpeg render --- camp2023/beon.ttf | Bin 0 -> 49536 bytes camp2023/config.ini | 39 ++++++++++++++++++++++++++++ camp2023/saira.ttf | Bin 0 -> 94056 bytes make-ffmpeg.py | 62 ++++++++++++++++++++++++++++++++------------ 4 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 camp2023/beon.ttf create mode 100644 camp2023/config.ini create mode 100644 camp2023/saira.ttf diff --git a/camp2023/beon.ttf b/camp2023/beon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..525497f38250fc66ba7a6a5053498e56656a1813 GIT binary patch literal 49536 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 N1s (frame_width - (2 * 6)): + 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 = "" @@ -225,20 +234,39 @@ def enqueue_job(event): outfile = os.path.join(os.path.dirname(args.project), event_id + '.ts') - videofilter = "drawtext=enable='between(n,{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) - videofilter += "drawtext=enable='between(n,{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) - videofilter += "drawtext=enable='between(n,{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) + 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}':box=1,".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}'box=1,".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}'box=1,".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) + 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) + 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 = 'ffmpeg -y -i "{0}" -vf "{1}" -shortest -c:v qtrle -movflags faststart -f mov "{2}"'.format(infile, videofilter, outfile) + cmd = '{3} -y -i "{0}" -vf "{1}" -shortest -c:v qtrle -movflags faststart -f mov "{2}"'.format(infile, videofilter, outfile, ffmpeg_path) 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) + 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) 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) + 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) if args.debug: print(cmd) From 17cef62ded96668034ed8ecb68cb93e467358905 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Mon, 16 Oct 2023 09:57:19 +0200 Subject: [PATCH 2/9] add vcfb22,23 --- vcfb22/__init__.py | 148 + vcfb22/artwork/Computerfont.ttf | Bin 0 -> 39104 bytes vcfb22/artwork/intro.svg | 15584 ++++++++++++++++++++++++++++++ vcfb22/artwork/lower-third.svg | 6231 ++++++++++++ vcfb22/artwork/outro.svg | 7956 +++++++++++++++ vcfb22/artwork/pause.svg | 6626 +++++++++++++ vcfb23/__init__.py | 148 + vcfb23/artwork/Computerfont.ttf | Bin 0 -> 39104 bytes vcfb23/artwork/intro.svg | 15584 ++++++++++++++++++++++++++++++ vcfb23/artwork/lower-third.svg | 6231 ++++++++++++ vcfb23/artwork/outro.svg | 7956 +++++++++++++++ vcfb23/artwork/pause.svg | 6626 +++++++++++++ 12 files changed, 73090 insertions(+) create mode 100644 vcfb22/__init__.py create mode 100644 vcfb22/artwork/Computerfont.ttf create mode 100644 vcfb22/artwork/intro.svg create mode 100644 vcfb22/artwork/lower-third.svg create mode 100644 vcfb22/artwork/outro.svg create mode 100644 vcfb22/artwork/pause.svg create mode 100644 vcfb23/__init__.py create mode 100644 vcfb23/artwork/Computerfont.ttf create mode 100644 vcfb23/artwork/intro.svg create mode 100644 vcfb23/artwork/lower-third.svg create mode 100644 vcfb23/artwork/outro.svg create mode 100644 vcfb23/artwork/pause.svg diff --git a/vcfb22/__init__.py b/vcfb22/__init__.py new file mode 100644 index 0000000..766aa09 --- /dev/null +++ b/vcfb22/__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/2022/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/vcfb22/artwork/Computerfont.ttf b/vcfb22/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/vcfb22/artwork/lower-third.svg b/vcfb22/artwork/lower-third.svg new file mode 100644 index 0000000..a70d3b4 --- /dev/null +++ b/vcfb22/artwork/lower-third.svg @@ -0,0 +1,6231 @@ + + + +$PERSON diff --git a/vcfb22/artwork/outro.svg b/vcfb22/artwork/outro.svg new file mode 100644 index 0000000..2659dde --- /dev/null +++ b/vcfb22/artwork/outro.svg @@ -0,0 +1,7956 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + More Recordings available on media.ccc.de + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vcfb22/artwork/pause.svg b/vcfb22/artwork/pause.svg new file mode 100644 index 0000000..8ef961c --- /dev/null +++ b/vcfb22/artwork/pause.svg @@ -0,0 +1,6626 @@ + + + +image/svg+xmlPause + \ No newline at end of file diff --git a/vcfb23/__init__.py b/vcfb23/__init__.py new file mode 100644 index 0000000..35cba63 --- /dev/null +++ b/vcfb23/__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/2023/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/vcfb23/artwork/Computerfont.ttf b/vcfb23/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/vcfb23/artwork/lower-third.svg b/vcfb23/artwork/lower-third.svg new file mode 100644 index 0000000..a70d3b4 --- /dev/null +++ b/vcfb23/artwork/lower-third.svg @@ -0,0 +1,6231 @@ + + + +$PERSON diff --git a/vcfb23/artwork/outro.svg b/vcfb23/artwork/outro.svg new file mode 100644 index 0000000..2659dde --- /dev/null +++ b/vcfb23/artwork/outro.svg @@ -0,0 +1,7956 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + More Recordings available on media.ccc.de + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vcfb23/artwork/pause.svg b/vcfb23/artwork/pause.svg new file mode 100644 index 0000000..8ef961c --- /dev/null +++ b/vcfb23/artwork/pause.svg @@ -0,0 +1,6626 @@ + + + +image/svg+xmlPause + \ No newline at end of file From 6d9aa93a4fa85ce208784b6a42add8bf0f0d68a3 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sun, 4 Apr 2021 21:28:01 +0200 Subject: [PATCH 3/9] make-blender: Fix debug mode file format in finalizing --- make-blender.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/make-blender.py b/make-blender.py index eafae78..e9d11a8 100644 --- a/make-blender.py +++ b/make-blender.py @@ -1,5 +1,10 @@ #!/usr/bin/env python3 # vim: tabstop=4 shiftwidth=4 expandtab +""" +Generate intros by rendering a blender project with some text fields replaced by +the schedule contents. +The blender project must be configured to use mkv/matroska as output file format! +""" import subprocess import renderlib @@ -217,10 +222,10 @@ def enqueue_job(event): for key, value in event.items(): value = str(value).replace('"', '\\"') scriptstr = scriptstr.replace("$" + str(key), value) - + with open(work_doc, 'w', encoding='utf-8') as fp: fp.write(scriptstr) - + if platform.system() == 'Darwin': if args.debug: print("running: Blender.app --background %s --python-use-system-env --python %s --use-extension 0 --threads 0 --render-output %s --render-anim" % (work_source, work_doc, intermediate_clip)) @@ -330,8 +335,8 @@ for event in events: intermediate_clip = os.path.join(tempdir.name, event_id + '.avi') final_clip = os.path.join(os.path.dirname(args.project), event_id + '.avi') else: - intermediate_clip = os.path.join(tempdir.name, event_id + '.mov') - final_clip = os.path.join(os.path.dirname(args.project), event_id + '.mov') + intermediate_clip = os.path.join(tempdir.name, event_id + '.mkv') + final_clip = os.path.join(os.path.dirname(args.project), event_id + '.mkv') copyfile(intermediate_clip, final_clip) event_print(event, "copied intermediate clip to " + final_clip) From 23be5074ba89eb268f10e449ea0bb1f03f6b59d4 Mon Sep 17 00:00:00 2001 From: Alexander Brock Date: Mon, 28 Aug 2023 16:27:42 +0200 Subject: [PATCH 4/9] Add missing dependency. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d5ef38..30b4322 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Yes! That's what I want! ------------------------ Okay, let's go. - - Install python3, python3-lxml, python3-cssutils (or use virtualenv, see below), inkscape and libav-tools + - Install python3, python3-lxml, python3-cssutils, python3-wand (or use virtualenv, see below), inkscape and libav-tools - Fork this repo on github and clone your personal fork to your local system. - Copy one of the existing setup: 00_example_render_byid - If you are using a newer version of intro-outro-generator, don't copy any of the other projects, as the __init.py__ may not contain all mandatory parameters in the tasks function. From 263c4bf8820ae020b46783a8e32647a3948fb7e8 Mon Sep 17 00:00:00 2001 From: Alexander Brock Date: Mon, 28 Aug 2023 16:28:06 +0200 Subject: [PATCH 5/9] Fix typo: Add missing 'd' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 30b4322..aef7eeb 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Okay, let's go. - search for `def debug()` and comment the sections about outro (postroll) and pause - run `./make.py yourproject/ --debug` to generate your first intro - if it looks good, duplicate intro.svg to outro.svg (postroll) and pause.svg (pause-loop) and modify them according to your needs. You can use different IDs in your SVG if required - - modify outroFrames and pauseFrames like before an test them using `./make.py yourproject/ --debug` + - modify outroFrames and pauseFrames like before and test them using `./make.py yourproject/ --debug` - if everything look like you'd want them to, run `./make.py yourproject/`. - You can use any debianesque linux (can be headless) to generate the videos. More cores help more. - Run `./make-snapshots.sh yourproject/` to generate a png from a specific time-index of your .ts or .dv-files. You can run `./make-snapshots.sh yourproject/ 5` to get a png for the frame at the 5th second of all your clips. Default is 3 seconds. From 1470c6c08ca062214e86a5d499f572bbec459f82 Mon Sep 17 00:00:00 2001 From: Alexander Brock Date: Wed, 30 Aug 2023 00:55:53 +0200 Subject: [PATCH 6/9] Fix typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aef7eeb..7143770 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ The animation sequence is controlled by the three frame-generator routines vorsp ### CSS-Style-Modifications `('logo', 'style', 'opacity', 1),` - locate object with id `logo` in the svg, parse its `style`-attribute as css-inline-string and change the value of the css-property `opacity` to 1. The Tupel-Element `'style'` is fixed and declares the type of action which is applied to the specified element. All other tupel-mebers can be modified to suit your needs. -To form an fade-in-opacity-animation, the frame-generator could look like this: +To form a fade-in-opacity-animation, the frame-generator could look like this: # three seconds of animation frames = 3*fps @@ -150,7 +150,7 @@ FEM/VOC-Tracker-Integration *that script-Z-thingy* The [FEM](http://fem.tu-ilmenau.de/) and the [VOC](https://c3voc.de/) uses a special Ticket-Tracker to keep track of the Talks on an event. Various tasks are performed around the recorded Videomaterial (preparing, cutting, encoding, releasing) - synchronized by the Tracker. The files starting with `script-Z` are experiments to integrate the intro-rendering into this process. On some Events the Schedule is very fluid with talks being addes or names changing over the whole conference. Using the Scripts to render the prerols when they are actually needed (and not some days before the conference) would help to get the always-freshest prerolls but it would an additional (computational intense) task to the publishing process. -Generating an Live-Stream-Overlay +Generating a Live-Stream-Overlay --------------------------------- While your working on your Video-Artwork you can create another required asset: the stream overlay. When we'll live-stream your Talks we can't send prerolls ovet the live-stream. To let your viewer now what program they are watching at, we usually overlay a transparent image over the live-stream like most television programs do, too. Just create another SVG of the size 1920×1080 (or 1024×576 if you're only targeting the legacy SD-Pipeline) and throw your logo into your prefered corner. To have it looking good we would suggest From c69dbd089ab17721c5c5fd403f551782ffb9e59d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 19:40:42 +0000 Subject: [PATCH 7/9] Bump lxml from 4.6.3 to 4.9.1 Bumps [lxml](https://github.com/lxml/lxml) from 4.6.3 to 4.9.1. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.3...lxml-4.9.1) --- updated-dependencies: - dependency-name: lxml dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 57edff5..181482a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ pillow cssutils==1.0.2 -lxml==4.6.3 +lxml==4.9.1 svg.path==4.0.2 Wand==0.6.5 From e13ac70e2b432bd2ea24b10573d172f926712e94 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sun, 22 Oct 2023 21:20:14 +0200 Subject: [PATCH 8/9] Backport changes introduced by "update make-ffmpeg" --- cccamp19/config.ini | 11 ++++++++--- denog11/config.ini | 11 ++++++++--- jh19-berlin/config.ini | 29 +++++++++++++++++------------ jh20-jue/config.ini | 21 ++++++++++++++------- jh21-rn/config.ini | 11 ++++++++--- jugendhackt/config.ini | 11 ++++++++--- make-ffmpeg.py | 4 ++-- mrmcd2019/config.ini | 13 ++++++++++--- 8 files changed, 75 insertions(+), 36 deletions(-) diff --git a/cccamp19/config.ini b/cccamp19/config.ini index f3c0668..181caed 100644 --- a/cccamp19/config.ini +++ b/cccamp19/config.ini @@ -3,11 +3,14 @@ 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 [title] in = 193 out = 324 -font = Marvel-Bold.ttf +fontfamily = +fontfile = Marvel-Bold.ttf fontsize = 120 fontcolor = #c68100 x = (w-text_w)/2 @@ -16,7 +19,8 @@ y = 480 [speaker] in = 233 out = 324 -font = Marvel-Regular.ttf +fontfamily = +fontfile = Marvel-Regular.ttf fontsize = 70 fontcolor = #c68100 x = (w-text_w)/2 @@ -25,7 +29,8 @@ y = 845 [text] in = 242 out = 324 -font = Marvel-Regular.ttf +fontfamily = +fontfile = Marvel-Regular.ttf fontsize = 45 fontcolor = #c68100 x = (w-text_w)/2 diff --git a/denog11/config.ini b/denog11/config.ini index 20367cd..6f403b5 100644 --- a/denog11/config.ini +++ b/denog11/config.ini @@ -3,11 +3,14 @@ schedule = https://pretalx.denog.de/denog11/schedule/export/schedule.xml template = denog11_intro_template.ts alpha = false prores = false +fontfile = true +inout = n [title] in = 1 out = 6.5 -font = DejaVuSans.ttf +fontfamily = +fontfile = DejaVuSans.ttf fontsize = 100 fontcolor = #f9cc12 x = 640 @@ -16,7 +19,8 @@ y = 200 [speaker] in = 2 out = 6.5 -font = DejaVuSans.ttf +fontfamily = +fontfile = DejaVuSans.ttf fontsize = 60 fontcolor = #ffffff x = 640 @@ -25,7 +29,8 @@ y = 900 [text] in = 3 out = 6.5 -font = DejaVuSans.ttf +fontfamily = +fontfile = DejaVuSans.ttf fontsize = 45 fontcolor = #ffffff x = 640 diff --git a/jh19-berlin/config.ini b/jh19-berlin/config.ini index 2a10de5..6a8740d 100644 --- a/jh19-berlin/config.ini +++ b/jh19-berlin/config.ini @@ -1,31 +1,36 @@ [default] -schedule = https://projects.alpaka.space/media/jhber19-schedule.xml +schedule = https://projects.alpaka.space/media/jhber19-schedule.xml template = intro-alpha.mov alpha = true prores = true +fontfile = true +inout = n [title] in = 175 -out = 260 -font = SourceSansPro-Bold.otf -fontsize = 90 +out = 260 +fontfamily = +fontfile = SourceSansPro-Bold.otf +fontsize = 90 fontcolor = #ffffff -x = 1090 +x = 1090 y = 450 [speaker] -in = 175 -out = 260 -font = SourceSansPro-Regular.otf -fontsize = 36 +in = 175 +out = 260 +fontfamily = +fontfile = SourceSansPro-Regular.otf +fontsize = 36 fontcolor = #ffffff -x = 1090 +x = 1090 y = 900 [text] in = 200 -out = 250 -font = SourceSansPro-Regular.otf +out = 250 +fontfamily = +fontfile = SourceSansPro-Regular.otf fontsize = 45 fontcolor = #c68100 x = (w-text_w)/2 diff --git a/jh20-jue/config.ini b/jh20-jue/config.ini index 310d66d..163ca71 100644 --- a/jh20-jue/config.ini +++ b/jh20-jue/config.ini @@ -1,19 +1,24 @@ [default] 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 +; 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 ; 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 +in = 20 ; outframe for totle out = 225 -; title font -font = ebisu.ttf +; title font (either font family or file, see default setting above) +fontfamily = +fontfile = ebisu.ttf ; title font size fontsize = 70 ; title color @@ -25,7 +30,8 @@ y = 865 [speaker] in = 40 out = 225 -font = ebisu.ttf +fontfamily = +fontfile = ebisu.ttf fontsize = 40 fontcolor = #eeeeee x = 600 @@ -35,7 +41,8 @@ y = 950 [text] in = 3 out = 4 -font = ebisu.ttf +fontfamily = +fontfile = ebisu.ttf fontsize = 45 fontcolor = #ffffff x = 640 @@ -44,4 +51,4 @@ text = '' ; build intros via -; ./make-ffmpeg.py jh20-jue/ +; ./make-ffmpeg.py jh20-jue/ diff --git a/jh21-rn/config.ini b/jh21-rn/config.ini index 293225e..a7870db 100644 --- a/jh21-rn/config.ini +++ b/jh21-rn/config.ini @@ -3,11 +3,14 @@ schedule = https://pretalx.c3voc.de/jugend-hackt-rhein-neckar-2021/schedule/expo template = jh21-rn-template.ts alpha = false prores = false +fontfile = true +inout = t [title] in = 1 out = 6.5 -font = SourceSansPro-Semibold.ttf +fontfamily = +fontfile = SourceSansPro-Semibold.ttf fontsize = 85 fontcolor = #ffffff x = 410 @@ -16,7 +19,8 @@ y = 877 [speaker] in = 2 out = 6.5 -font = SourceSansPro-Semibold.ttf +fontfamily = +fontfile = SourceSansPro-Semibold.ttf fontsize = 45 fontcolor = #ffffff x = 410 @@ -25,7 +29,8 @@ y = 954 [text] in = 3 out = 6.5 -font = SourceSansPro-Semibold.ttf +fontfamily = +fontfile = SourceSansPro-Semibold.ttf fontsize = 45 fontcolor = #ffffff x = 1920 diff --git a/jugendhackt/config.ini b/jugendhackt/config.ini index 8e1457a..54955fb 100644 --- a/jugendhackt/config.ini +++ b/jugendhackt/config.ini @@ -4,11 +4,14 @@ schedule = https://jh.franzi.business/schedule/jh23dd.xml template = alpaka_orange.ts alpha = false prores = false +fontfile = true +inout = t [title] in = 1 out = 9.5 -font = SourceSansPro-Semibold.ttf +fontfamily = +fontfile = SourceSansPro-Semibold.ttf fontsize = 100 fontcolor = #00a5dd x = 100 @@ -17,7 +20,8 @@ y = 785 [speaker] in = 2 out = 9 -font = SourceSansPro-Semibold.ttf +fontfamily = +fontfile = SourceSansPro-Semibold.ttf fontsize = 55 fontcolor = #00a5dd x = 100 @@ -26,7 +30,8 @@ y = 900 [text] in = 3 out = 8 -font = SourceSansPro-Semibold.ttf +fontfamily = +fontfile = SourceSansPro-Semibold.ttf fontsize = 45 fontcolor = #00a5dd x = 100 diff --git a/make-ffmpeg.py b/make-ffmpeg.py index 9b77a26..af1ecb6 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -75,8 +75,8 @@ 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'] -inout = cparser['default']['inout'] +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'] diff --git a/mrmcd2019/config.ini b/mrmcd2019/config.ini index 5c02e73..165753c 100755 --- a/mrmcd2019/config.ini +++ b/mrmcd2019/config.ini @@ -2,11 +2,16 @@ #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 [title] in = 50 out = 225 -font = Jura-Bold.ttf +fontfamily = +fontfile = Jura-Bold.ttf fontsize = 80 fontcolor = #47acda x = (w-text_w)/2 @@ -15,7 +20,8 @@ y = 540 [speaker] in = 75 out = 225 -font = Jura-Regular.ttf +fontfamily = +fontfile = Jura-Regular.ttf fontsize = 50 fontcolor = #094762 x = (w-text_w)/2 @@ -24,7 +30,8 @@ y = 950 [text] in = 242 out = 324 -font = Jura-Regular.ttf +fontfamily = +fontfile = Jura-Regular.ttf fontsize = 45 fontcolor = #c68100 x = (w-text_w)/2 From 85bf295be678c6711a426c06d4d53f2c21d832d8 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Sun, 22 Oct 2023 21:31:54 +0200 Subject: [PATCH 9/9] make-ffmpeg: Fix typos in videofilter --- make-ffmpeg.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/make-ffmpeg.py b/make-ffmpeg.py index af1ecb6..89f12ce 100755 --- a/make-ffmpeg.py +++ b/make-ffmpeg.py @@ -249,11 +249,11 @@ def enqueue_job(event): 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}'box=1,".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 + videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}':box=1,".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}'box=1,".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}':box=1,".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)