Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

59
Cyril Concolato Introduction au streaming sur HTTP et à la norme MPEG-DASH Cyril Concolato Groupe Multimédia Telecom ParisTech 01/10/2013

description

Présentation donnée lors de la réunion du 1/10/2013 au GDR-ISIS, présentant les concepts de streaming vidéo sur HTTP, la norme MPEG-DASH et les outils Open Source permettant de manipuler du contenu DASH.

Transcript of Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Page 1: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Introduction

au streaming sur HTTP

et

à la norme MPEG-DASH

Cyril Concolato

Groupe Multimédia

Telecom ParisTech

01/10/2013

Page 2: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Plan

Contexte

Principes et problèmes du HTTP streaming

La norme MPEG-DASH

Utiliser MPEG-DASH

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 2

Page 3: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Consommation vidéo:

Situation actuelle (sur Internet)

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 3

Netflix 32%

YouTube 17% HTTP

11% BitTorrent

6%

MPEG 3%

Hulu 2%

iTunes 2%

SSL 2%

Flash Video 2%

Facebook 1%

Other 22%

Consommation par accès Internet fixe aux Etats-Unis

Source: Rapport Sandvine

1H 2013

Page 4: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Consommation vidéo:

Prévisions (sur mobile)

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 4

Page 5: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Consommation vidéo:

Nouveau formats, nouveaux débits

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 5

Page 6: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Consommation vidéo:

Diversité des périphériques vidéo connectés

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 6

Page 7: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo sur HTTP:

Approche générale et défis

« Adapter la vidéo au Web, et non adapter le web à la vidéo »

• Réutilisation des infrastructures du Web (protocoles, infrastructures)

• Distribution « Over The Top » (OTT)

Défis • Cibler tous les périphériques connectés au Web

─ TV connectées (e.g. HbbTV), PC, smartphones, tablettes

• Fournir au moins les mêmes services que la TV broadcast et l’IPTV sur un réseau non-managé

─ Contenu streamé à la demande et « live »

─ Sous-titrage et multi-langues

─ Qualité et robustesse du système

─ Gestion des revenus: publicité, contenus premium

• Et plus de services encore ─ Services de rattrapage

─ Services personalisés

─ Plus de contenus enrichis: angles de vue, metadonnées, extensions 3D, …

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 7

Page 8: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo sur HTTP:

Avantages & problèmes

Facilité de déploiement (comparativement à RTP) • Traversée des pare-feux, des serveurs de translation

d’adresses

• Réutilisation possible des caches, proxys, serveurs web existants

Problèmes liés à TCP • Congestion possible du réseau et non respect des

contraintes temps-réel ─ Délai et gigue: « rebuffering »

─ Perte de paquets: échéances manquées

• Partage de bande passante

Problèmes liés à HTTP • Protocole orienté « fichiers » et non streaming

• Plusieurs approches mises en œuvre par le passé

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 8

Page 9: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo sur HTTP:

Premières solutions (1/2)

Approches simplistes

• Téléchargement simple puis lecture

• P2P simple puis lecture

Téléchargement progressif

• Lecture progressive d’un fichier en cours de téléchargement (e.g. YouTube)

─ Taille de fichier connue à l’avance

─ Entrelacement audio/vidéo

─ Difficulté d’adapter le téléchargement à la bande passante

─ Difficulté de gestion du « live »

• Lecture progressive avec contrôle

─ Utilisation du header du fichier pour déterminer les plages de données à jouer

• association temps média/position dans la fichier

─ Utilisation de requêtes HTTP avec « byte-range »

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 9

Page 10: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

HTTP Server

Streaming vidéo sur HTTP:

Exemple pour la VoD

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Header

V1 A1 V2 A2 V3 A3

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

Media Data

V1 A1 V2 A2 V3 A3

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

Client

Header

V1 A1 V2 A2 V3 A3

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

V1 A1 V2 A2 V3 A3

Play

Vk-& Ak-1 Vk Ak Vk+1 Ak+1 Seek

10

Page 11: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo sur HTTP:

Premières solutions (2/2)

Téléchargement progressif pour le « live »

• Lecture progressive d’un fichier infini (e.g. web radios)

─ Modification du protocole HTTP (IceCast, ShoutCast)

─ Difficulté de contrôler la lecture (play/pause/fast forward)

─ Difficulté de mettre en cache le contenu et de gérer un

grand nombre d’utilisateurs simultanés

─ Difficulté de gestion de la dynamicité des contenus (e.g.

nombre de flux)

Comment fournir une solution unique?

• Live&VoD, dynamique, adaptative, cacheable

Streaming Video Adaptatif sur HTTP

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 11

Page 12: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo adaptatif sur HTTP:

Difficultés et principes de base

Difficulté du streaming adaptatif • Difficulté de mesure de la bande passante

• Adaptation coûteuse du débit côté serveur ─ transcodage

─ Nombre d’utilisateurs

Principes • S’appuyer sur le téléchargement de fichier sur HTTP (serveurs

web non modifiés)

• Découper un fichier en plusieurs morceaux séparés de durée plus courte (qques secondes)

• Fournir ces morceaux en différentes qualités, débits

• Encoder ces morceaux de façon à permettre le changement de qualité/débit à la fin d’un morceau

• Signaler au client la liste des morceaux et le temps associé

• Signaler au client les différentes qualités

• Laisser le client décider en fonction de sa bande passante

• Mettre à jour la liste des fichiers en temps réel

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 12

Page 13: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

HTTP Server

Header

V1 A1 V2 A2 V3 A3

Media Data

V1 A1 V2 A2 V3 A3

V2

Streaming vidéo adaptatif sur HTTP:

Exemple

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 13

Client

Header

V1 A1 V2 A2 V3 A3

Header

Media Data Vk-& Ak-1 Vk Ak Vk+1 Ak+1

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

Header

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

V1 A1 V2 A2 V3 A3

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

Header

Media Data Vk-& Ak-1 Vk Ak Vk+1 Ak+1

Vk-& Ak-1 Vk Ak Vk+1 Ak+1

V1

Header

Media Data Vj-1 Aj-1 Vj Aj Vj+1 Aj+1

Vj-11 Aj-1 Vj Aj Vj+1 Aj+1

Page 14: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo adaptatif sur HTTP:

Rôles des clients et du serveur

Système asymétrique orienté client

Client

• Téléchargement, lecture et mise à jour du manifeste

─ Systèmes de « polling » (principalement) ou de « push »

• Gestion des téléchargements des fichiers média

─ Contrôle de la lecture

• Basée sur la vitesse de téléchargement

• Basée sur le niveau du buffer

─ Décision d’adaptation et choix de la qualité

Serveur

• Système sans état (pas de session ID)

─ 1 URL correspond à un contenu unique

• Modifications éventuelles pour le live

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 14

Page 15: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo adaptatif sur HTTP:

Rôle des caches et CDN

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 15

Page 16: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming Vidéo Adaptatif sur HTTP:

Chaîne de distribution

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 16

Page 17: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo adaptatif sur HTTP:

Le problème du changement de qualité

Changement de qualité de D1,n-1 -> D2,k

• Téléchargement de δd média inutile

• Double décodage de δt média

Alignement temporel des média

• Supprime double téléchargement (δd=0) et double

décodage (δt=0)

• Simplifie la description temporelle des segments

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

t

Débit 1

Débit 2

n-1 n n+1

k-1 k I-frame

δt

k+1

n+2

k+2

δd

17

Page 18: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Streaming vidéo adaptatif sur HTTP:

Les technologies existantes

Technologies propriétaires

• Echostar / Move Networks

• Microsoft Smooth Streaming (MSS)

• Apple HTTP Live Streaming (HLS)

• Adobe HTTP Dynamic Streaming (HDS)

Technologies standards

• 3GPP Adaptive HTTP Streaming (AHS)

• MPEG Dynamic Adaptive Streaming over HTTP

(DASH)

• W3C HMTL5 Media Source

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 18

Page 19: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Apple HTTP Live Streaming

Solution complète • Live, VOD & streaming adaptatif

Spécification soumise à l’IETF • Supporté sur iPhone, iPad and quelques lecteurs de bureau

Format de description des fichiers média (Playlist) • Basé sur le format M3U8 (Playlist MP3 étendu, pas XML)

• Identification par type MIME: ─ « audio/x-mpegURL »

─ « video/x-mpegURL »

─ « application/x-mpegURL »

Fichiers média • Segments de 10 secondes (~3 segments de buffer)

• Fichier AAC pour les flux audio-seul

• MPEG-2 Transport Stream avec AAC Audio & AVC Video

• Sous-titrage avec le format WebVTT

https://developer.apple.com/streaming/#examples

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 19

Page 20: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Microsoft IIS Smooth Streaming

Solution complète

• Live, VOD & Streaming adaptatif

Solution intégrée au système Windows Media

• Supportée sur les platformes avec Silverlight

Format de description des fichiers média

• Fichier XML propriétaire

Fichier média

• Fichier MP4 modifiés (notamment pour la protection)

Demo

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 20

Page 21: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH

Un standard pour remplacer les

solutions propriétaires

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 21

Source: xkcd.com

Page 22: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG DASH

Standard ISO/IEC 23009-1:2012 • Support for Live, VOD and Adaptive Streaming

• Standard disponible gratuitement et ‘royalty free’

Tentative d’unification des solutions existantes • Commerciales, 3GPP, OIPF

• Dévelopée par un consortium industriel important: Qualcomm, Microsoft, Adobe, Ericsson, Apple, …

• Principes identiques

Format de description des fichiers média: manifeste • Description XML appelée MPD (Media Presentation

Description)

Formats de fichiers media: « segments » • MPEG-2 TS et ISO Base Media File

• Possibilité d’étendre DASH avec d’autres formats (Matroska, …)

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 22

Page 23: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Modèle Client ISO/IEC 23009-1:2012(E)

8 © ISO/IEC 2012 – All rights reserved

Figure 2 — DASH Client Model

4.3 DASH data model overview

DASH is intended to support a media-streaming model for delivery of media content in which control lies

exclusively with the client. Clients may request data using the HTTP protocol from standard web servers that have no DASH-specific capabilities. Consequently, this standard focuses not on client or server procedures

but on the data formats used to provide a DASH Media Presentation.

The collection of encoded and deliverable versions of media content and the appropriate description of these

form a Media Presentation. Media content is composed of a single or multiple contiguous media content

periods in time. Each media content period is composed of one or multiple media content components, for example audio components in various languages and a video component. Each media content component

has an assigned media content component type, for example audio or video.

Each media content component may have several encoded versions, referred to as media streams. Each

media stream inherits the properties of the media content, the media content period, the media content

component from which it was encoded and in addition it gets assigned the properties of the encoding process such as sub-sampling, codec parameters, encoding bitrate, etc. This describing metadata is relevant for static

and dynamic selection of media content components and media streams.

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 23

Page 24: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Terminologie (1/2)

Segment = portion/morceau de bitstream

• Définition exacte selon le type de bitstream (TS,

ISOBMF)

• Sous-segment = portion d’un segment

Représentation= suite de segments

• aux mêmes caractéristiques (résolution, framerate,

bitrate, …)

02/10/2013 24 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 25: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Terminologie (2/2)

AdaptationSet = ensemble de représentations

d’un même média

• Utilisé pour l’adaptation en débit/capacité terminal

• Représentations « équivalentes »: même aspect ratio,

même langage, …

Groupe = ensemble d’AdaptationSet alternatifs

• Critères: langage, aspect ratio, point de vue, …

Période = ensemble des médias partageant la

même base de temps

• programme (au sens MPEG-2)

02/10/2013 25 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 26: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEGd-DASH:

Modèle de données

02/10/2013 26

ISO/IEC 23009-1:2012(E)

© ISO/IEC 2012 – All rights reserved 9

Figure 3 — DASH High-Level Data Model

DASH is based on a hierarchical data model aligned with the presentation in Figure 3. A DASH Media

Presentation is described by a Media Presentation Description document. This describes the sequence of Periods (see 5.3.2) in time that make up the Media Presentation. A Period typically represents a media

content period during which a consistent set of encoded versions of the media content is available i.e. the set of available bitrates, languages, captions, subtitles etc. does not change during a Period.

Within a Period, material is arranged into Adaptation Sets (see 5.3.3). An Adaptation Set represents a set of

interchangeable encoded versions of one or several media content components (see 5.3.4). For example there may be one Adaptation Set for the main video component and a separate one for the main audio

component. If there is other material available, for example captions or audio descriptions, then these may each have a separate Adaptation Set. Material may also be provided in multiplexed form, in which case

interchangeable versions of the multiplex may be described as a single Adaptation Set, for example an Adaptation Set containing both the main audio and main video for a Period. Each of the multiplexed

components may be described individually by a media content component description.

An Adaptation Set contains a set of Representations (see 5.3.5). A Representation describes a deliverable encoded version of one or several media content components. A Representation includes one or more media

streams (one for each media content component in the multiplex). Any single Representation within an Adaptation Set is sufficient to render the contained media content components. Typically, clients may switch

from Representation to Representation within an AdaptationSet in order to adapt to network conditions or

other factors. Clients may also ignore Representations that rely on codecs or other rendering technologies they do not support or that are otherwise unsuitable.

Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 27: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

La notion de « Représentation »

Médias multiplexés

• dans un seul AdaptationSet

• Les composants de la représentation sont indiqués via

<ContentComponent>

• Coût stockage plus important (eg audio dupliqué)

Médias Indépendants

• Un AdaptationSet par media (audio, vidéo)

• Segments différents

Identification

• type MIME (video/mp4 …)

• type de codec (avc1.640828) – RFC6381

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 27

Page 28: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les segments

Adressables via des URL HTTP

• Absolu (1 URL par segment)

• Byte-range request (1 URL pour N segments)

3 types

• Segment d’ « Initialisation »

─ Données communes aux différentes représentations

• MPEG-2: PAT,PMT,CAT

• ISOBMF: moov

• Segment de « BitstreamSwitching »

─ Données nécessaires lors du switching

• Assure que la concaténation des segments venant de différentes représentations est conforme

• Segment d’« Index »

─ Indexation haut-niveau timerange->byterange

─ Même format pour MPEG-2 et MPEG-4

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 28

Page 29: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les types d’URLs

URL Explicite

• pointe directement vers une ressource HTTP

URL Template

• Permet la construction de l’URL en fonction des

paramètres du segment à récupérer

• Paramètres de substitution:

─ $RepresentationID$: ID de la représentation

─ $Number$: numéro du segment

─ $Bandwidth$: bande passante de la représentation

─ $Time$: temps de début du segment

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 29

Page 30: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Exemple de manifest <MPD type="static" minBufferTime="PT1.5S" mediaPresentationDuration="PT0H10M0.00S">

<ProgramInformation moreInformationURL="http://gpac.sourceforge.net">

<Title>Media Presentation Description for file ZZZ</Title>

</ProgramInformation>

<Period start="PT0S" duration="PT0H10M0.00S">

<AdaptationSet>

<ContentComponent id="1" contentType="video"/>

<ContentComponent id="2" contentType="audio" lang="und"/>

<SegmentTemplate initialization="counter-10mn_I25_openGOP_init.mp4"/>

<Representation id="1" mimeType="video/mp4" codecs="avc1.64000d,mp4a.40.02" width="320"

height="180" sampleRate="44100" numChannels="1" lang="und" startWithSAP="3"

bandwidth="109952">

<SegmentTemplate timescale="1000" duration="9880" media="seg40_$Number$.m4s"

startNumber="1"/>

</Representation>

<Representation id="2" mimeType="video/mp4" codecs="avc1.64000d,mp4a.40.02" width="320"

height="180" sampleRate="44100" numChannels="1" lang="und" startWithSAP="3"

bandwidth="182078">

<SegmentTemplate timescale="1000" duration="9880" media="seg112_$Number$.m4s"

startNumber="1"/>

</Representation>

</AdaptationSet>

</Period> </MPD>

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 30

Page 31: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Le modèle de temps

Défini par période

• Une base de temps par période

• Offset (T0) configurable

Switching

• effectué en respectant les temps de présentation (PTS)

entre deux représentations

─ PAS les temps de décodage (I/P/B <-> I/P)

• Nécessité de bien déterminer

─ Les points d’accès (endroit où le switching peut avoir lieu)

─ Les temps de présentation de ces points d’accès

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 31

Page 32: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les point d’accès

Historique: RAP (Random Access Point)

• I / IDR frame

Dans la pratique, cas plus complexes

• Open GOP: Trames du GOP N+1 avec des références vers GOP N

• Gradual Decoding Refresh: pas de « I » ou « IDR » mais un rafraichissement de l’image sur N>1 trames

SAP: Stream Access Point

• Définit les différents types de points d’accès

─ 1,2: Closed GOP

─ 3: Open GOP

─ 4: GDR

─ 5&6: passons …

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 32

Page 33: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

L’indexation

Permettre l’accès aléatoire dans un media

• Certains format n’ont pas les outils nécessaires (TS)

• Nécessite de lire beaucoup de données du segment (ISOBMF)

Création d’une table d’indexation « sidx »

• Une table par segment

• N (configurable par l’encodeur) entrées ou sous-segments, avec:

─ Durée et taille du sous-segment

─ Type de point d’accès (SAP)

─ temps entre le début du sous-segment et le point d’accès

─ Un sous-segment peut lui-même être un SIDX+média associé

• Localisation de la table

─ Dans le fichier (ISOBMF)

─ Hors fichier (TS ou ISOBMF)

─ Récupérable via HTTP GET (avec ou sans byte-range)

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 33

Page 34: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Exemple d’indexation – la syntaxe SIDX

SIDX est complet • L’ensemble des média du segment est indexé

─ Pas de trou

02/10/2013

SIDX

- earliest PTS

- for NbSubSeg

- ref_type

- size

- duration

- SAP_type

- SAP_Offset

SIDX

- …

Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 34

Page 35: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Format de fichier ISOBMF:

Rappel

Structure hiérarchique à base de « boîtes »

• Identifiant de boîte sur 4 octets (ou 16 - UUID)

• Longueur sur 4 octets (ou 8)

• Données

─ Pas de données en dehors des boîtes

─ Facilité d’ignorer les boîtes non reconnues

Séparation données média et données de

signalisation (header)

• « moov » vs. « mdat »

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 35

Page 36: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Structure typique d’un fichier ISO

36

ISO File

ftyp moov

mvhd trak

tkhd mdia

mdhd minf

vmhd dinf

dref

stbl

stsd stts stsz …

hdlr

...

iods

mdat …

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 37: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Fichier ISO à deux pistes

02/10/2013 37

frame

sample sample

frame

sample

mdat

trak

moov

Audio track

trak

Video track

Movie (meta-data)

Media Data

sample

Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 38: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Structure d’un fichier ISO fragmenté

38

moov

mvex

mehd

trex

trex

moof

mfhd

traf

traf

tfhd

trun

trun

mdat mdat

File

ftyp

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 39: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Structure d’un fichier ISO fragmenté

02/10/2013 39

trak moo

v

Audio track

trak

Video track

mdat

trex trex

trun moof

traf

trun

traf

mdat

trun

trun moof

traf

trun

traf

mdat

trun

Movie

Movie Fragment

Movie Fragment

Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 40: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les Segments ISOBMF

Segment (ou subsegment)

• Boite « styp »

• suite de fragments (moof+mdat)

─ Données média dans le même fichier

─ Position (byte offset) des trames / début du « moof »

• Un segment contient au moins un SAP

• Information du temps de décodage du premier sample de chaque track (tfdt) pour chaque fragment

─ DTS stockés comme des durées, pas des temps absolu

─ DTS=0 au début de chaque moof

02/10/2013

Vidéo

Audio

Vidéo

Audio

Vidéo

Audio

tfdtaudio- tfdtvideo

Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 40

Page 41: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les Segments ISOBMF (2/2)

InitializationSegment

• ISOBMF VIDE !

• Défaut des fragments (compacité des tables)

• Configuration des décodeurs (SPS/PPS)

─ POUR CHAQUE DEBIT

Indexed Segment

• Segment avec une boite « sidx » avant le premier

fragment

─ Potentiellement d’autres sidx dans le segment

BitStreamSwitching Segment

• Pas utilisé

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 41

Page 42: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les Segments MPEG-2 TS

Segment (ou subsegment)

• Suite de packets TS (188 bytes)

• Un seul programme

• Comprenant un nombre entier N de trames vidéo

─ Nombre de trames audio pas forcément entier

InitializationSegment

• PAT, PMT et tout PSI constant sur la durée du flux

• ECM si constant sur la durée du flux

• Optionnel – si absent, PAT/PMT/ECM en début de segment

BitstreamSwitching Segment

• Utilisé pour rendre conforme la concaténation des segments TS

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 42

Page 43: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les Segments MPEG-2 TS (2/2)

Indexed Segment

• Structure ISOBMF, hors flux TS

• Boite styp, sidx

• Boite pcrb: indique le PCR du premier byte du premier

paquet TS de chaque sous-segment

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 43

Page 44: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Notions avancées

Sous-Représentations

• Accès à un composant dans un multiplexe

• Accès à une version de base dans un codage

hiérarchique (SVC, MVC)

Utilisation possibles des représentation

• Video 3D: stereo (frame packing), multiview

• Viewpoint

• Role

─ Chapitre, sous-titre

─ Commentary/dub

• Rating, Accessibility

• Trick Mode

02/10/2013 44 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 45: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Notions avancées

Disponibilité de session

• Début, Fin

• TimeShiftBufferDepth

Distribution de MPD

• <Location> peut rediriger vers un serveur HTTP pour

les mises à jours de MPD

Changement d’URLs

• <BaseURL> permet de changer l’URL de base de

n’importe quel élément dans la hierarchie MPD

02/10/2013 45 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 46: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les métriques de qualité

Collection d’info QoS/QoE

• Début et durée de l’analyse

• Types de données

• Indiqué par le fournisseur dans le MPD

Plusieurs points de collecte

• Pile TCP

• Assemblage des segments

• Sortie du lecteur

02/10/2013 46 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 47: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH:

Les métriques de qualité (2/2)

Critères Réseaux • TCP:

─ Adresses IP, Interface IP

─ temps d’ouverture/fermeture/connexion

• HTTP ─ URL avant et après redirect + byte-range

─ Temps de requête et de réponse + code

─ Trace des taux de transferts à intervalle donné

Critères Switching • Temps du switch (absolu et temps média),

représentations ID

• Niveaux de buffers (segments

Critères lecture • Actions play/pause/stop/… et temps associé

• …

02/10/2013 47 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 48: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH: les profiles

ISOBMF onDemand

Un seul segment par représentation

• Alignement temporel des sous-segments

• Sous-segments démarrent avec SAP 1, 2 ou 3

Indexing obligatoire

• Tous les « sidx » avant le premier moof

Segment « Self-initializing »

• Le segment contient le « moov »:

─ Fichier = styp, moov, sidx, moof,mdat … moof, mdat

Non utilisable pour du live

02/10/2013 48 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 49: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH: les profiles

ISOBMF Live Profile

N segments par représentation

• Alignement temporel des segments

• Segments démarrent avec SAP 1, 2 ou 3

Indexing optionnel

• Tous les « sidx » avant le premier moof

Utilisable pour du live ou VoD

02/10/2013 49 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 50: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH: les profiles

ISOBMF Main Profile

N segments par représentation

• Alignement temporel des segments

• Segments démarrent avec SAP 1, 2 ou 3

• Chaque sous-segment à un SAP 1, 2, ou 3

Indexing optionnel

• Tous les « sidx » avant le premier moof

Utilisable pour du live ou VoD

02/10/2013 50 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 51: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

MPEG-DASH: les profiles

MPEG-2 TS

Main Profile: Recommandations

• Indexing optionnel

• Alignement temporel des segments

• Chaque segment démarre avec SAP 1, 2 ou 3

Simple Profile

• PSI identique dans toutes les représentations

• Si CAS, ECM valide sur la durée d’un sous-segment

ou du segment si pas de sidx

• Indexing optionnel

02/10/2013 51 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS

Page 52: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Utiliser MPEG-DASH

Les outils

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 52

Page 53: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

DASH Industry Forum

Consortium pour la promotion de DASH

• Recommandations de bonnes pratiques

─ DASH-264/AVC Guidelines

• Campagne d’interoperabilité

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 53

Page 54: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

HTML5 Media Source

Recommandation par le W3C en cours de développement • Extension à la recommandation HTML 5

Interface de programmation JavaScript • Contrôle du buffer de décodage

─ Ajout, suppression de segments

• Supportée par Google Chrome, MS IE 11, (Firefox)

Possibilité de jouer du contenu DASH • Pas de nécessité du manifest XML (remplacé par du JSON)

• Utilisation de segments média DASH

Lecteurs disponibles • DASH.js:

http://dashif.org/reference/players/javascript/1.0.0/index.html

• DASH-JS: http://www-itec.uni-klu.ac.at/dash/?page_id=746

• YouTube: http://dash-mse-test.appspot.com/dash-player.html

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 54

Page 55: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Outils Open Source

GPAC, http://gpac.wp.mines-telecom.fr • MP4Box

─ Manipuler des fichiers MP4

─ Générer une présentation DASH off-line

─ Simuler la génération en live

• DashCast ─ Encoder un flux en multiples qualités

─ Générer le MPD pour le « live » et le « on-demand »

• MP4Client ─ Lecteur (toute platforme)

LibDASH, http://www.bitmovin.net/libdash.html • Développée par une spin-off (Bitmovin) de l’université de

Klagenfurt (Autriche)

DASHEncoder, http://www-itec.uni-klu.ac.at/dash/?page_id=282

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 55

Page 56: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

GPAC MP4Box

Génération de segments conformes

• Formats: ISOBMFF & M2TS

• MPD (tout les profiles)

Support pour différentes syntaxes MPD

• SegmentList, SegmentTemplate, SegmentTimeline

Regroupement autotmatique des entrées en

“adaptation sets”, representations, groups,

• Sur la base des caractéristiques des flux entrants

Génération flexible des segments et sous-segments

• indexation, alignement RAP, différents modes de

“switching”

Génération de MPD "dynamic“, de segments et de

mises à jour à partir de contenu pré-enregistré

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 56

Page 57: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Contenus

Séquences Telecom ParisTech

• http://download.tsi.telecom-

paristech.fr/gpac/DASH_CONFORMANCE/TelecomPar

isTech/

« Distributed DASH dataset »

• S. Lederer, C. Mueller, C. Timmerer, C. Concolato, J.

Le Feuvre, K. Fliegel. 2013. Distributed DASH dataset.

In Proc. of the 4th ACM Multimedia Systems

Conference (MMSys '13).

• http://www-itec.uni-klu.ac.at/dash/?page_id=958

Séquences DASH-IF

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 57

Page 58: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Références

Publications scientifiques

• ICME 2013

─ Tutoriel par T. Stockhammer & A. Begen

─ http://www.icme2013.org/tutorials.php#tuthttp

• MMSys 2011

─ Session spéciale: http://www.mmsys.org/?q=node/46

• IEEE JSAC Special Issue

http://www.jsac.ucsd.edu/Calls/adaptivemediastreamin

gCFPa.pdf

Cours

• Formation Continue à Telecom ParisTech

02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 58

Page 59: Tutoriel sur le streaming vidéo sur HTTP et sur MPEG-DASH

Cyril Concolato

Questions?

[email protected]