a reference dash live video source
TRANSCRIPT
Worked with video for 20 years 16 at Ericsson Research 4 at MobiTV
Python for 13 years prototyping testing tools video transport, packaging, analysis,
synthesis, streaming servers
About me
Intro
Video is exploding over HTTP
Standard API in HTML-5
1. File download via URI2. Streaming using MSE
Media Source Extension
MSE => segmented video Adaptive Bitrate Live
Players in Javascript DASH is agreed way
forward Standard from MPEG
Can be extended withencryption/DRM via EMEEncrypted Media Extensions
Dynamic Adaptive Streaming over HTTP Standard from MPEG Borrows from HLS, Smoothstreaming etc
Adds more use cases and flexibility Starting to get widely used
Netflix (Chrome, IE11, Safari 8), Google (Youtube/Chrome), Microsoft
Two components MPD (manifest) Media
DASH
DASH IOP
DASH is huge Too many options
DASH-IF for IOP Guidelines Reference client:
dash.js on Github Test vectors
VoD Live
Live testing is hard. Needs
live feed live encoder
Has timing issues => Live Simulator
No feed/encoder Can do many test
cases
MPD
MPD is manifest XML description
Media links Variants Timing
VoD – duration Live – start,
timeshift, … Flexible:
multiple periods multiple
representations
Media Segment
MP4 (iso) files Hiearchy of boxes
[size][type][content] Relatively easy to
parse and change Need to change
number & timing
Approach
On-the-fly generation mod_python DASH VoD Source Live config (from
scan) Options in URL Align available
content with wall-clock -> live sync
MPD : VoD -> live Number template For time t, a certain
segment # is avail. Time-limited services Periods Use ElementTree package
Segments: Infinite series with correct
timing Use struct package
24/7 service one period (MPD never changes) This can be compared to show system delay depending on
segment duration (see demo) Time-shift-buffer-depth and minimum-update-period can be
changed
Time-limited services (with MPD updates) Multiple periods Ad signaling
Add cues for client-side ad insertion
UTCTiming Synchronize client clock with server in different ways
Some test cases
Apache2 server with mod_python Only basic usage State-less
Hosted by DASH-IF at vm2.dashif.org Source Code
Transferred copyright to DASH-IF and became Open Source last weekhttps://github.com/Dash-Industry-Forum/dash-live-source-simulator
Players Browser (Chrome): dash.js and shaka-player on Github Android: ExoPlayer on Github
Environment
Python 2 -> 3 conversion
MP4 parsing a bit tricky, since mixture of bytes and strings [size][‘styp’][…]
Integer divisions … Took half-a-day to do
conversion, but…
Cannot run Python3 easily mod_python only
runs one Python version
mod_wsgi only for 2.6 and 2.7 in our Apache 2.2 setup
The code stays Python 2 for now!