Partie 1 : La Nouvelle Recette



Les recettes de Grand Mère
Historique du Streaming
- MPEG 4
- RTMP (Real Time Messaging Protocol)
- Mono BitRate
- Apple HLS / Adobe HDS / Smooth Streaming
- HTTP
- ABR (Adaptive BitRate)
- DRM
- Google DASH
- HTTP
- MSE / EME
- CENC (Common Encryption)
2013
2010
Avant 2010



2016

Ultimatum de Google Chrome
Pour bien réussir un player
Les étapes
Les ingrédients : HLS / DASH - MSE / EME
Le dressage : Player
La préparation : SDK Video

So, let's get cooking!
500g de farine
HLS - HTTP Live Streaming
HTTP Live Streaming
Streaming basé sur le HTTP
Fragmentation du flux en fichier Transport Stream (.m2ts)
Manifest (.m3u8)

Supporté nativement par Safari
Plugin Flash pour le desktop
Adaptive BitRate
Niveau de Protection :
- HLS sans protection.
- HLS chiffré en AES 128
- pHLS DRM sans validation serveur
- HLS avec DRM Primetime et Serveur Adobe Access
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-FAXS-CM:MII6nQYJKoZIhvc......VbIUHxKH5Yex07/lc9tDTboVVG8gpQBqijNldduTt7qVYQ7XdxfX2/PvDYKFr08ZVQM5MZz+6jVfsXfgHMLpPm
#EXT-X-STREAM-INF:BANDWIDTH=2056000,RESOLUTION=960x540,CODECS="avc1.64001F,mp4a.40.2"
224_5.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=408313,RESOLUTION=400x224,CODECS="avc1.42C01E,mp4a.40.2"
224_6.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=828371,RESOLUTION=640x360,CODECS="avc1.42C01E,mp4a.40.2"
224_7.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1328395,RESOLUTION=720x406,CODECS="avc1.42C01E,mp4a.40.2"
224_8.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-FAXS-CM:
#EXT-X-KEY:METHOD=AES-128,URI="faxs://faxs.adobe.com",IV=0x469ED9BADF0AF2D794154BBC69103C01
#EXT-X-MEDIA-SEQUENCE:533052
#EXTINF:6.000,
224_5_533052.ts?m=1466673026
#EXTINF:6.000,
224_5_533053.ts?m=1466673026
#EXTINF:6.000,
224_5_533054.ts?m=1466673026
#EXTINF:6.000,
224_5_533055.ts?m=1466673026
#EXTINF:6.000,
224_5_533056.ts?m=1466673026
#EXTINF:6.000,
224_5_533057.ts?m=1466673026
#EXTINF:6.000,
224_5_533058.ts?m=1466673026
#EXTINF:6.000,
224_5_533059.ts?m=1466673026
#EXTINF:6.000,
224_5_533060.ts?m=1466673026
5 oeufs
DASH - Dynamic Adaptive Streaming over HTTP
DASH
Standard de format de diffusion audiovisuelle sur Internet basé sur la norme ISO/IEC 23009-1

Fragmentation du flux en MPEG-4, WebM, ou libre
Manifest Media Presentation Description (.mpd)
Non supporté < IE11 & IOS
<video />
Adaptive BitRate
Multi DRM via Common Encryption (CENC)
Advertising Insertion
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" mediaPresentationDuration="PT0H3M1.63S" minBufferTime="PT1.5S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011"
type="static">
<Period duration="PT0H3M1.63S" start="PT0S">
<AdaptationSet>
<ContentComponent contentType="video" id="1" />
<Representation bandwidth="4190760" codecs="avc1.640028" height="1080" id="1" mimeType="video/mp4" width="1920">
<BaseURL>car-20120827-89.mp4</BaseURL>
<SegmentBase indexRange="674-1149">
<Initialization range="0-673" />
</SegmentBase>
</Representation>
<Representation bandwidth="2073921" codecs="avc1.4d401f" height="720" id="2" mimeType="video/mp4" width="1280">
<BaseURL>car-20120827-88.mp4</BaseURL>
<SegmentBase indexRange="708-1183">
<Initialization range="0-707" />
</SegmentBase>
</Representation>
<Representation bandwidth="869460" codecs="avc1.4d401e" height="480" id="3" mimeType="video/mp4" width="854">
<BaseURL>car-20120827-87.mp4</BaseURL>
<SegmentBase indexRange="708-1183">
<Initialization range="0-707" />
</SegmentBase>
</Representation>
<Representation bandwidth="686521" codecs="avc1.4d401e" height="360" id="4" mimeType="video/mp4" width="640">
<BaseURL>car-20120827-86.mp4</BaseURL>
<SegmentBase indexRange="708-1183">
<Initialization range="0-707" />
</SegmentBase>
</Representation>
<Representation bandwidth="264835" codecs="avc1.4d4015" height="240" id="5" mimeType="video/mp4" width="426">
<BaseURL>car-20120827-85.mp4</BaseURL>
<SegmentBase indexRange="672-1147">
<Initialization range="0-671" />
</SegmentBase>
</Representation>
<Representation bandwidth="100000" codecs="avc1.4d4015" height="144" id="5" mimeType="video/mp4" width="256">
<BaseURL>car-20120827-160.mp4</BaseURL>
<SegmentBase indexRange="671-1146">
<Initialization range="0-670" />
</SegmentBase>
</Representation>
</AdaptationSet>
<AdaptationSet>
<ContentComponent contentType="audio" id="2" />
<Representation bandwidth="127236" codecs="mp4a.40.2" id="6" mimeType="audio/mp4" numChannels="2" sampleRate="44100">
<BaseURL>car-20120827-8c.mp4</BaseURL>
<SegmentBase indexRange="592-851">
<Initialization range="0-591" />
</SegmentBase>
</Representation>
<Representation bandwidth="255236" codecs="mp4a.40.2" id="7" mimeType="audio/mp4" numChannels="2" sampleRate="44100">
<BaseURL>car-20120827-8d.mp4</BaseURL>
<SegmentBase indexRange="592-851">
<Initialization range="0-591" />
</SegmentBase>
</Representation>
<Representation bandwidth="31749" codecs="mp4a.40.5" id="8" mimeType="audio/mp4" numChannels="1" sampleRate="22050">
<BaseURL>car-20120827-8b.mp4</BaseURL>
<SegmentBase indexRange="592-851">
<Initialization range="0-591" />
</SegmentBase>
</Representation>
</AdaptationSet>
</Period>
</MPD>
1 Litre de lait
MSE - Media Source Extension


MSE - Media Source Extension
Extension de l'interface HTMLMediaElement
utilisé par HTMLVideoElement et HTMLAudioElement
Permet à Javascript de faire du streaming audio ou video.
- Lecture du Manifest
- Estimation de la bande passante
- Choix du BitRate optimal
- Récupération et Lecture des segments
- Mise en buffer
- Décodage et Diffusion


Can I use ?
3 cuillères à soupe d'huile
EME - Encrypted Media Extensions
EME - Encrypted Media Extensions
Extension de MSE qui met en place un moyen de communication entre les navigateurs et leurs fournisseurs DRM
Environment |
Player Technology |
Media |
DRM |
---|---|---|---|
Chrome |
HTML5 MSE |
MPEG-DASH |
Widevine Modular |
Internet Explorer 11 Windows 8.1 |
HTML5 MSE |
MPEG-DASH |
PlayReady |
Internet Explorer (other) |
Flash, Silverlight |
MPEG-DASH |
ClearKey, PlayReady |
Edge |
HTML5 MSE, HTML5 HLS |
MPEG-DASH, HLS |
PlayReady, AES HLS |
Firefox |
HTML5 MSE |
MPEG-DASH |
Adobe, Widevine |
Safari |
HTML5 MSE, HTML5 HLS |
MPEG-DASH, HLS |
Fairplay, AES |
Android: Web > v4.1 |
HTML5 MSE, HTML5 HLS |
MPEG-DASH, HLS |
Widevine Modular |
iOS: web |
HTML5 HLS |
HLS |
AES |
Et 1/2 verre de biere
Et laisser reposer ....

Les ingrédients : HLS / DASH - MSE / EME
Le dressage : Player
La préparation : SDK Video
Pour bien réussir un player
Les étapes



Pour la suite
SDK Video et Player




Objectif Fin 2016
Objectif 2017


Des questions ?
Un player presque Parfait
By nafresne
Un player presque Parfait
- 644