add intro/outro for osmodevcon 2019
warning: the generated .ts (with the --debug option) are incorrect because the not all animations have the same number of frames while the rendered does not remove the frames generated from the previous rendering before assembling all individual frames into a .ts animation. this bug will remain if the .frames cache folder is not cleared before using ./make.py (also without --debug)
This commit is contained in:
parent
fe19313a7e
commit
faa6c5b036
5 changed files with 5152 additions and 0 deletions
147
osmodevcon2019/__init__.py
Normal file
147
osmodevcon2019/__init__.py
Normal file
|
@ -0,0 +1,147 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from renderlib import *
|
||||
from easing import *
|
||||
|
||||
# URL to Schedule-XML
|
||||
scheduleUrl = 'https://pretalx.sysmocom.de/osmodevcon2019/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
|
||||
))
|
Loading…
Add table
Add a link
Reference in a new issue