Compare commits

...
Sign in to create a new pull request.

6 commits

Author SHA1 Message Date
Jannik Beyerstedt
474d793d31 hackmas2024: New intro and outro 2024-08-30 13:22:27 +02:00
Jannik Beyerstedt
7ef49366f1 hackmas2024: No speaker names 2024-08-29 22:04:41 +02:00
Jannik Beyerstedt
ab3da26e45 Hotfix: Replace ' by a real apostrophe 2024-08-29 22:04:23 +02:00
Jannik Beyerstedt
f6977c2c5d Hotfix: Ignore missing track field 2024-08-29 13:52:44 +02:00
Jannik Beyerstedt
108ef79e8d hackmas: patch in font border 2024-08-28 16:22:17 +02:00
Jannik Beyerstedt
957a4dd4a4 hackmas2024: init 2024-08-28 12:26:45 +02:00
7 changed files with 65 additions and 7 deletions

BIN
hackmas2024/VDS_New.ttf Normal file

Binary file not shown.

39
hackmas2024/config.ini Normal file
View file

@ -0,0 +1,39 @@
[default]
schedule = https://sessions.hack-mas.at/api/0/xml/schedule
template = 290824_Hackmas_intro_video_v3.mp4
alpha = false
prores = false
fontfile = true
inout = t
[title]
in = 13
out = 21
fontfamily =
fontfile = VDS_New.ttf
fontsize = 75
fontcolor = #ffffff
x = 1100
y = 550
[speaker]
in = 2
out = 9
fontfamily =
fontfile = VDS_New.ttf
fontsize = 64
fontcolor = #ffffff
x = 250
y = 1080
[text]
in = 0
out = 0
fontfamily =
fontfile = VDS_New.ttf
fontsize = 0
fontcolor = #ffffff
x = 0
y = 0
text = ''

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

8
hackmas2024/readme.md Normal file
View file

@ -0,0 +1,8 @@
# Hackmas 2024 Readme
Get intro-slate from shared storage (provided by event).
Get outro.ts from shared storage or generate from still images by running:
```sh
ffmpeg -loop 1 -i hackmas2024-outro-slate.png -f lavfi -i anullsrc -c:v mpeg2video -t 10 -aspect 16:9 -c:a mp2 -b:v 15000k -map 0:v -map 1:a outro.ts
```

View file

@ -228,7 +228,9 @@ def enqueue_job(event):
t = fit_title(event_title, int(title_fontsize), int(title_x))
t = t.replace(':', "\:") # the ffmpeg command needs colons to be escaped
t = t.replace('\'', "") # the ffmpeg command needs ' to be escaped
s = fit_speaker(event_personnames, int(speaker_fontsize), int(speaker_x))
s = s.replace('\'', "") # the ffmpeg command needs ' to be escaped
if args.debug:
print('Title: ', t)
@ -244,6 +246,9 @@ def enqueue_job(event):
else:
ffmpeg_path = 'ffmpeg'
title_bordersize = int(title_fontsize) / 30
speaker_bordersize = int(speaker_fontsize) / 30
text_bordersize = int(text_fontsize) / 30
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(
@ -253,12 +258,12 @@ 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}',".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}:borderw={9}:x={5}:y={6}:text='{7}',".format(
title_in, title_out, font_t, title_fontsize, title_fontcolor, title_x, title_y, t, inout, title_bordersize)
videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:borderw={9}:x={5}:y={6}:text='{7}',".format(
speaker_in, speaker_out, font_s, speaker_fontsize, speaker_fontcolor, speaker_x, speaker_y, s, inout, speaker_bordersize)
videofilter += "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:borderw={9}:x={5}:y={6}:text='{7}'".format(
text_in, text_out, font_tt, text_fontsize, text_fontcolor, text_x, text_y, text_text, inout, text_bordersize)
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)

View file

@ -100,6 +100,12 @@ def events(scheduleUrl, titlemap={}):
url = event.find('url').text.strip()
else:
url = ''
if event.find('track') 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
}