a reference dash live video source

13
A Reference DASH Live Video Source Torbjörn Einarsson, MobiTV 2015-05-13

Upload: torbjoern-einarsson

Post on 07-Aug-2015

65 views

Category:

Software


3 download

TRANSCRIPT

A Reference DASH Live Video SourceTorbjörn Einarsson, MobiTV

2015-05-13

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

DEMO

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!

?

THANK YOU

[email protected]