Compare commits
6 commits
master
...
events/hac
Author | SHA1 | Date | |
---|---|---|---|
![]() |
474d793d31 | ||
![]() |
7ef49366f1 | ||
![]() |
ab3da26e45 | ||
![]() |
f6977c2c5d | ||
![]() |
108ef79e8d | ||
![]() |
957a4dd4a4 |
7 changed files with 65 additions and 7 deletions
BIN
hackmas2024/VDS_New.ttf
Normal file
BIN
hackmas2024/VDS_New.ttf
Normal file
Binary file not shown.
39
hackmas2024/config.ini
Normal file
39
hackmas2024/config.ini
Normal 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 = ''
|
BIN
hackmas2024/hackmas2024-intro-slate.png
Normal file
BIN
hackmas2024/hackmas2024-intro-slate.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 MiB |
BIN
hackmas2024/hackmas2024-outro-slate.png
Normal file
BIN
hackmas2024/hackmas2024-outro-slate.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 MiB |
8
hackmas2024/readme.md
Normal file
8
hackmas2024/readme.md
Normal 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
|
||||||
|
```
|
|
@ -228,7 +228,9 @@ def enqueue_job(event):
|
||||||
|
|
||||||
t = fit_title(event_title, int(title_fontsize), int(title_x))
|
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 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 = fit_speaker(event_personnames, int(speaker_fontsize), int(speaker_x))
|
||||||
|
s = s.replace('\'', "’") # the ffmpeg command needs ' to be escaped
|
||||||
|
|
||||||
if args.debug:
|
if args.debug:
|
||||||
print('Title: ', t)
|
print('Title: ', t)
|
||||||
|
@ -244,6 +246,9 @@ def enqueue_job(event):
|
||||||
else:
|
else:
|
||||||
ffmpeg_path = 'ffmpeg'
|
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 fontfile == 'true':
|
||||||
if platform.system() == 'Windows':
|
if platform.system() == 'Windows':
|
||||||
videofilter = "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format(
|
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(
|
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)
|
text_in, text_out, font_tt_win, text_fontsize, text_fontcolor, text_x, text_y, text_text, inout)
|
||||||
else:
|
else:
|
||||||
videofilter = "drawtext=enable='between({8},{0},{1})':fontfile='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format(
|
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_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}:x={5}:y={6}:text='{7}',".format(
|
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_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}:x={5}:y={6}:text='{7}'".format(
|
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_in, text_out, font_tt, text_fontsize, text_fontcolor, text_x, text_y, text_text, inout, text_bordersize)
|
||||||
else:
|
else:
|
||||||
videofilter = "drawtext=enable='between({8},{0},{1})':font='{2}':fontsize={3}:fontcolor={4}:x={5}:y={6}:text='{7}',".format(
|
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)
|
title_in, title_out, title_fontfamily, title_fontsize, title_fontcolor, title_x, title_y, t, inout)
|
||||||
|
|
|
@ -100,6 +100,12 @@ def events(scheduleUrl, titlemap={}):
|
||||||
url = event.find('url').text.strip()
|
url = event.find('url').text.strip()
|
||||||
else:
|
else:
|
||||||
url = ''
|
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 a tupel with the event-id, event-title and person-names
|
||||||
yield {
|
yield {
|
||||||
'day': day.get('index'),
|
'day': day.get('index'),
|
||||||
|
@ -109,7 +115,7 @@ def events(scheduleUrl, titlemap={}):
|
||||||
'persons': personnames,
|
'persons': personnames,
|
||||||
'personnames': ', '.join(personnames),
|
'personnames': ', '.join(personnames),
|
||||||
'room': room.attrib['name'],
|
'room': room.attrib['name'],
|
||||||
'track': event.find('track').text,
|
'track': track,
|
||||||
'url': url
|
'url': url
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue