Presentation about a DASH test source for live video at PyCon Sweden 2015.
It is written in Python and runs in the cloud at http://vm2.dashif.org. It recently became open source at Github as dash-live-source-simulator
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
A Reference DASH Live Video Source
1. A Reference DASH Live Video
Source
Torbjörn Einarsson, MobiTV
2015-05-13
2. 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
3. Intro
Video is exploding
over HTTP
Standard API in HTML-5
1. File download via URI
2. 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 with
encryption/DRM via EME
Encrypted Media Extensions
4. 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
5. 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
6. MPD
MPD is manifest
XML description
Media links
Variants
Timing
VoD – duration
Live – start, timeshift,
…
Flexible:
multiple periods
multiple
representations
7. Media Segment
MP4 (iso) files
Hiearchy of boxes
[size][type][content]
Relatively easy to parse
and change
Need to change number
& timing
8. 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
9. 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
11. 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 week
https://github.com/Dash-Industry-Forum/dash-live-source-simulator
Players
Browser (Chrome): dash.js and shaka-player on Github
Android: ExoPlayer on Github
Environment
12. 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!