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