Cyril Concolato
Introduction
au streaming sur HTTP
et
à la norme MPEG-DASH
Cyril Concolato
Groupe Multimédia
Telecom ParisTech
01/10/2013
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
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
Cyril Concolato
Consommation vidéo:
Prévisions (sur mobile)
02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 4
Cyril Concolato
Consommation vidéo:
Nouveau formats, nouveaux débits
02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 5
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Cyril Concolato
Utiliser MPEG-DASH
Les outils
02/10/2013 Introduction HTTP Streaming & MPEG-DASH - Journée GDR-ISIS 52
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
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
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
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
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
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