Technical details
Performance
Webinars are performed on location
in front of a live audience.
Stage
The stage for the webinars is the trunk of a van.
The van is parked during the performances,
at select places in Ã…rhus and Copenhagen.
Recording
During each webinar, audio and video is captured and mixed.
The live-mixed recording is presented on location as part of the webinar,
and also broadcast live to remote spectators,
Capture
Mix
Stream
[[!template id=alert context=danger content=<<ALERT
- Must save recording to disk, before compression and streaming
- Must survive exceeding bandwith (fixed or varying) towards broadcast host
ALERT]]
[[!template id=alert context=warning content=<<ALERT
- Should log telemetri of streaming host
- Machine temperature
- Machine speed
- Processing (speed, utilization)
- Disk (read speed, write speed, space available)
- Network (bandwidth consumption, data loss, response time, radio signal quality)
- Compression (input format, output format, output size, latency)
- Should handle varying bandwith towards broadcast host
- Should optimize compression
- Should configure and test fallback radio link
- Should measure archival storage needs
ALERT]]
[[!template id=alert context=info content=<<ALERT
- Maybe embed countdown into video image
- Maybe embed logo as watermark into video image
- Maybe dynamically adjust compression to match varying bandwith towards broadcast host
- Maybe test analog video input (for emergency fallback)
ALERT]]
Broadcast
[[!template id=alert context=warning content=<<ALERT
- Should log dynamic IP of streaming host
- Should log telemetri of broadcasting host
- Machine temperature
- Machine speed
- Processing (speed, utilization)
- Disk (read speed, write speed, space available)
- Network (bandwidth consumption, data loss)
- Distribution (open sessions, latency)
ALERT]]
[[!template id=alert context=info content=<<ALERT
- Maybe log geolocation of streaming host
- Maybe gracefully handle varying bandwith towards users
ALERT]]
Play
[[!template id=alert context=danger content=<<ALERT
- Must keep audio and video syncronized (lipsync)
ALERT]]
[[!template id=alert context=warning content=<<ALERT
- Should test dedicated (non-web) players
- mpv
- vlc
- bowser
- Default player on Windows
- Default player on Windows Phone
- Default player on OSX
- Default player on IOS
- Default player on Android
ALERT]]
Website
The website https://omni-presence.dk/ documents the work.
Styling
User interface and user experience is done mobile-first
using the Bootstrap framework,
with an aim of creating a conventional modern business feel.
[[!template id=alert context=warning content=<<ALERT
- Should warn user if browser does not support live code (javascript)
- Should suggest driver install when browser does not support live media (WebRTC)
- Should warn user if browser fails to activate live media (WebRTC)
- Should document use of dedicated (non-web) players on webinar page
- Should hide notes on tech page by default, showing only when pushing a button "Display internal notes" at bottom
ALERT]]
[[!template id=alert context=info content=<<ALERT
- More than one testimonial (where exactly?)
- Maybe fixate footer at bottom
- Maybe better match footer with other styling
- Maybe place countdown on top of video image
- Maybe place front page webinar teaser at top for all devices (not only large ones)
- Maybe add animation (e.g. slide in from right) for front page webinar teaser
- Maybe have front page top intro fill whole width and without space at top
- Maybe use carousel for front page top intro
- Maybe add countdown to front page webinar teaser
- Maybe add space above contact form
- Maybe show geolocation of streaming host on webinar page
ALERT]]
Interaction
Fedback form is provided.
[[!template id=alert context=info content=<<ALERT
- Maybe send contact form data as email
- Maybe extend contact form (expanded during fill-out of the form)
- Confirmation message when comment sent with human confirmation
- Error message when comment sent without human confirmation
- Where does the comment emails go?
- What is the interaction from there?
- CGI @xayide or mail @morla
- data security
- form.omnipresence.dk?
ALERT]]