SlideShare una empresa de Scribd logo
1 de 47
Media Source Extensions 
Streaming Video without Plugins 
Jeff Tapper 
Digital Primates 
@jefftapper
Who am I? 
• Senior Consultant at Digital Primates 
– Building next generation client applications 
• Built video applications for many of the most 
watched live broadcasts 
• Developing Internet applications for 19 years 
• Author of 12 books on Internet technologies
Who are you?
Agenda 
• Video and the Internet today 
• Understanding HTTP Streaming 
• What are the Streaming options without a 
plugin? 
• What is DASH 
• What is DASH-264 
• Making it work in a browser 
• Questions
Online video Options 
• Progressive Download 
• Real Time Protocols (RTP, RTMP, RTSP, etc) 
• HTTP Streaming (HDS, HLS, Smooth 
Streaming, etc)
The challenge 
• Most agree that HTTP Streaming is the most 
efficient choice 
• Different devices support different streaming 
protocols 
• No one standard is currently supported 
ubiquitously 
• Results in media being served in several 
different formats to support the broadest 
range of devices
What do browsers support? 
• Unfortunately, Progressive Download is the only 
ubiquitously supported option 
• Different Browsers support different video 
codec’s 
– H.264 
– webM 
– VP8/VP9 
– Etc. 
• Safari (iOs and MacOS only) natively supports HLS 
• MediaSource Extensions released in Chrome and 
IE11, betas in Safari and Firefox
MediaSource Extensions (MSE) 
• MSE allow for pieces (segments) of media to 
be handed to the HTML5 video tag’s buffer 
directly. 
• This enables HTTP Streaming in HTML 
• Not universally supported, yet. 
• Currently (as of September 2014) an Editors 
Draft to the HTML Working Group
What is MPEG-DASH 
 DASH – Dynamic Adaptive Streaming via HTTP 
 International open standard, developed and 
published by ISO 
 Addresses both simple and advanced use cases 
 Enables highest-quality multiscreen distribution 
and efficient dynamic adaptive switching 
 Enables reuse of existing content, devices and 
infrastructure 
 Attempts to unify to a single standard for HTTP 
Streaming
DASH and codecs 
• The DASH specification is codec agnostic 
• Any existing or future codec can work with 
DASH 
• DASH manifest describes which codec is used 
• Allows ability for a single manifest to describe 
several different versions in different codecs
DASH264 
• H.264 is dominant format today 
• Many vendors and service providers are 
committed to supporting/enabling DASH264 
• Provides support for today’s requirements 
such as DRM 
• H.264 is backed by rigorous testing and 
conformance
DASH Industry Forum 
• Addressing the dramatic growth of broadband 
video by recommending a universal delivery 
format that provides end users with the best 
possible media experience by dynamically 
adapting to changing network conditions.
DASH Industry Forum 
• Objectives: 
– promote and catalyze market adoption of MPEG-DASH 
– publish interoperability and deployment guidelines 
– facilitate interoperability tests 
– collaborate with standard bodies and industry 
consortia in aligning ongoing DASH standards 
development and the use of common profiles across 
industry organizations 
• Over 65 members 
• Visit http://dashif.org for more information 
• Released the DASH/264 standard
Building a DASH player 
• We have built DASH players for several 
different platforms 
– Flash 
– Android 
– HTML5/JavaScript (dash.js) 
• DASH.js is available as an open source project 
(bsd3) on github 
• DASH.js is the reference player for the DASH 
Industry Forum (dashif.org)
How to play a DASH Stream 
• Download Manifest 
• Parse Manifest 
• Determine optimal bandwidth for client 
• Initialize for bandwidth 
• Download Segment 
• Hand segment to MSE 
• Check Bandwidth to determine if change is 
necessary
Understanding DASH structure 
• Three types of files 
– Manifest (.mpd) 
• XML file describing the segments 
– Initialization file 
• Contains headers needed to decode bytes in segments 
– Segment Files 
• Contains playable media 
• Includes: 
– 0…many video tracks 
– 0…many audio tracks
DASH Manifest 
• Manifest contains: 
– Root node 
– 1 or more periods 
• Periods contain 1 adaptation set per video stream and 
• Periods contain 1 adaptation set per audio stream 
• Adaptation Sets contain: 
– Content Composition nodes (for each video or audio track) 
– 1 or more Representation node 
» Each representation describes a single bitrate 
» Representations contain data on finding the actual segments 
» Different ways a representation can describe segments
Describing Representations 
• SegmentBase 
– Describes a stream with only a single Segment per bitrate 
– Can be used for Byte Range Requests 
• SegmentList 
– A SegmentList will contain a specific list of each 
SegmentURL (individual HTTP packet with media data) 
– Can be used for Byte Range Requests 
• SegmentTemplate 
– Defines a known url for the fragment with wildcards 
resolved at runtime to request a segments (see bbb.mpd) 
– Alternatively, can specify a list of segments based on 
duration
SegmentList 
<Representation id="h264bl_hd" mimeType="video/mp4" 
codecs="avc1.42c01f" width="1280" height="720" startWithSAP="1" 
bandwidth="514864"> 
<SegmentList timescale="1000" duration="10000"> 
<Initialization sourceURL="mp4-main-multi-h264bl_hd-.mp4"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-1.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-2.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-3.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-4.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-5.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-6.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-7.m4s"/> 
<SegmentURL media="mp4-main-multi-h264bl_hd-8.m4s"/>
SegmentTemplate fixed segment 
duration 
<AdaptationSet> 
<ContentComponent id="1" contentType="video"/> 
<SegmentTemplate 
initialization="BigBuckBunny_720p_1800kbps_44khz_track1_dash.mp4"/> 
<Representation id="1" 
mimeType="video/mp4“ codecs="avc1.64001f" 
width="1280" height="720“ 
startWithSAP="1" bandwidth="1809954"> 
<SegmentTemplate timescale="1000" duration="13809" 
media="bbb_seg_BigBuckBunny_720p_1800kbps_44khz_track1$Number$.m4s" 
startNumber="1"/> 
</Representation> 
</AdaptationSet>
SegmentTemplate variable segment 
duration 
<AdaptationSet group="2" mimeType="video/mp4" par="16:9“ minBandwidth="475000“ 
maxBandwidth="6589000" minWidth="176" maxWidth="1680" 
minHeight="99" maxHeight="944“ segmentAlignment="true“ 
startWithSAP="1"> 
<SegmentTemplate timescale="1000" 
initialization="dash/ateam-video=$Bandwidth$.dash" 
media="dash/ateam-video=$Bandwidth$-$Time$.dash"> 
<SegmentTimeline> 
<S t="0" d="4171" /> 
<S d="2503" /> 
<S d="2961" /> 
<S d="2461" /> 
<S d="2127" r="2" /> 
…
dash.js player
dash.js player 
• dash.js is a free open source player 
• Code available on github 
• Currently the base of several different 
production players 
• Recent uses include: 
– BBC live broadcasts 
– Wowza 
– EZDRM 
– And more!
How to play a DASH Stream 
• Download Manifest 
• Parse Manifest 
• Determine optimal bandwidth for client 
• Initialize for bandwidth 
• Download Segment 
• Hand segment to MSE 
• Check Bandwidth to determine if change is 
necessary
Tools used by dash.js 
Core Player 
• Dijon – DI / IOC 
Development 
• Jasmine – unit tests 
Web Site 
• AngularJS – Application Framework 
• Flat-ui – UI elements 
• Flot – Charting 
• Kendo - Components
Class Structure 
• The player is divided into two main packages. 
• streaming – Contains the classes responsible 
for creating and populating the MediaSource 
buffers. These classes are intended to be 
abstract enough for use with any segmented 
stream (such as DASH, HLS, HDS and MSS). 
• dash – Contains the classes responsible for 
making decisions specifically related to Dash.
streaming package
MediaPlayer.js 
• Exposes the top level functions and properties 
to the developer (play, autoPlay, isLive, abr 
quality, and metrics). 
• The manifest URL and the HTML Video object 
as passed to the MediaPlayer.
Context.js 
• The dependency mapping for the stream 
package. 
• The context is passed into the MediaPlayer 
object allowing for different MediaPlayer 
instances to use different mappings.
Stream.js 
• Loads/refreshes the manifest. 
• Create SourceBuffers from MediaSource. 
• Create BufferManager classes to manage 
SourceBuffers. 
• Responds to events from HTML Video object. 
• For a live stream, the live edge is calculated 
and passed to the BufferController instances.
Debug.js 
• Convenience class for logging methods. 
• Default implementation is to just use 
console.log(). 
• Extension point for tapping into logging 
messages.
BufferController.js 
• Responsible for loading fragments and 
pushing the bytes into the SourceBuffer. 
• Once play() has been called a timer is 
started to check the status of the bytes in the 
buffer. 
• If the amount of time left to play is less than 
Manifest.minBufferTime the next fragment 
is loaded. 
• Records metrics related to playback.
ManifestLoader.js 
• Responsible for loading manifest files. 
• Returns the parsed manifest object. 
FragmentLoader.js 
• Responsible for loading fragments. 
• Loads requests sequentially.
AbrController.js 
• Responsible for deciding if the current quality 
should be changed. 
• The stream metrics are passed to a set of 
‘rules’. 
• Methods: 
getPlaybackQuality(type, data) 
 type – The type of the data 
(audio/video). 
 data – The stream data.
DownloadRatioRule.js 
• Validates that fragments are being 
downloaded in a timely manner. 
• Compares the time it takes to download a 
fragment to how long it takes to play out a 
fragment. 
• If the download time is considered a 
bottleneck the quality will be lowered.
InsufficientBufferRule.js 
• Validates that the buffer doesn’t run dry 
during playback. 
• If the buffer is running dry continuously it 
likely means that the player has a processing 
bottleneck (video decode time is longer than 
playback time).
dash package
DashContext.js 
• Defines dependency mapping specific to the 
dash package. 
– Parser 
– Index Handler 
– Manifest Extensions
DashParser.js 
• Converts the manifest to a JSON object. 
• Converts duration and datetime strings into 
number/date objects. 
• Manages inheritance fields. 
– Many fields are inherited from parent to child 
nodes in DASH. 
– For example, a BaseURL can be defined in the 
<MPD> node and all <Representation> nodes 
inherit that value.
DashHandler.js 
• Responsible for deciding which fragment URL should be 
loaded. 
• Methods: 
 getInitRequest(quality) – Returns an initialization 
request for a given quality, if available. 
 getSegmentRequestForTime(time, quality) – Returns 
a fragment URL to load for a given quality and a given 
time. Returns a Stream.vo.SegmentRequest object. 
 getNextSegmentRequest(quality) – Returns the next 
fragment URL to load. Assumes that 
getSegmentRequestForTime() has already been called. 
 getCurrentTime (quality) – Returns the time for the 
last loaded fragment index.
DashHandler.js (cont’d) 
• Uses available information in the manifest (SegmentList, 
SegmentTemplate, SegmentBase). 
• When using a single, non-fragmented mp4 file the SIDX box 
will be loaded to determine byte ranges for segments.
Flow 
1. Create the Context and MediaPlayer instances. 
var context = new Dash.di.DashContext(), 
player = new MediaPlayer(context); 
2. Initialize MediaPlayer and set manifest URL. 
player.startup(); 
player.setIsLive(false); 
player.attachSource(manifest_url); 
3. Attach HTML Video element. 
video = document.querySelector(".dash-video-player 
video"), 
player.autoPlay = true; 
player.attachView(video);
2. Call play()on the MediaPlayer (if autoPlay = 
false). 
3. The Stream object will be created and initialized with the 
manifest URL. 
4. The manifest is loaded and then parsed. 
5.MediaSource, SourceBuffers, and 
BufferControllers are created. 
– Create one BufferController per stream type (usually 
video and audio). 
6. Set the duration of the MediaSource to the duration of the 
manifest (or infinity for a live stream). 
7. If the stream is live, calculate the live edge. 
8. Call play() on the HTML video element. 
9. The BufferManager instances create a timer. When the 
timer ticks the state of the buffers is checked.
BufferManager.validate() 
1. Check to see if the buffers need more data. 
• Must be in a playing state. 
• Must not already be loading data. 
• Must require more data to be buffered. 
amountBuffered < manifest.minBufferTime 
2. If automatic ABR is enabled check to see if the bitrate 
should be changed. 
• Ask AbrController for the new quality. 
• Rules will determine which bitrate to change to. 
3. If initial playback, seeking, or the bitrate has changed load 
the initialization fragment (if available).
4. Ask the IndexHandler for the next fragment request. 
• If seeking pass the seek time to the IndexHandler. 
• Otherwise ask for the ‘next’ fragment. 
• Pass the bitrate to the IndexHandler. 
6. The IndexHandler returns a SegmentRequest indicating 
what action the BufferManager should take next. 
• “download” – Download and append the fragment to the buffer. 
• “stall” – Wait because the IndexHandler is not ready. 
• “complete” – Signal that the stream has completed playback. 
7. Repeat.
Resources 
• DASH Industry Forum 
– http://www.dashif.org 
– Reference Player 
(http://dashif.org/reference/players/javascript) 
• Reference Player Source Code 
– https://github.com/Dash-Industry-Forum/dash.js 
• HTML Extensions 
– MSE: http://www.w3.org/TR/media-source/ 
– EME: http://www.w3.org/TR/encrypted-media/ 
• Twitter 
– @jefftapper 
– @digitalprimates
Questions?

Más contenido relacionado

La actualidad más candente

Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overviewJerrin George
 
FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...
FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...
FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...ssuserecfcc8
 
Linux Porting to a Custom Board
Linux Porting to a Custom BoardLinux Porting to a Custom Board
Linux Porting to a Custom BoardPatrick Bellasi
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)The Linux Foundation
 
Android Multimedia Framework
Android Multimedia FrameworkAndroid Multimedia Framework
Android Multimedia FrameworkPicker Weng
 
How to see the log files through ( gui and cli) in cluster ontap netapp stora...
How to see the log files through ( gui and cli) in cluster ontap netapp stora...How to see the log files through ( gui and cli) in cluster ontap netapp stora...
How to see the log files through ( gui and cli) in cluster ontap netapp stora...Saroj Sahu
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal BootloaderSatpal Parmar
 
CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)Chengjen Lee
 
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...The Linux Foundation
 
Presentation aix basic
Presentation   aix basicPresentation   aix basic
Presentation aix basicxKinAnx
 
Audio and Video streaming.ppt
Audio and Video streaming.pptAudio and Video streaming.ppt
Audio and Video streaming.pptVideoguy
 
Fun with the Hak5 Rubber Ducky
Fun with the Hak5 Rubber DuckyFun with the Hak5 Rubber Ducky
Fun with the Hak5 Rubber Duckykieranjacobsen
 
MediaPlayer Playing Flow
MediaPlayer Playing FlowMediaPlayer Playing Flow
MediaPlayer Playing FlowJavid Hsu
 

La actualidad más candente (20)

Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overview
 
FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...
FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...
FlashSystem 7300 Midrange Enterprise for Hybrid Cloud L2 Sellers Presentation...
 
Codecs
CodecsCodecs
Codecs
 
Multimedia Streaming Architecture
Multimedia Streaming ArchitectureMultimedia Streaming Architecture
Multimedia Streaming Architecture
 
Linux Porting to a Custom Board
Linux Porting to a Custom BoardLinux Porting to a Custom Board
Linux Porting to a Custom Board
 
3 multimedia systems
3   multimedia systems3   multimedia systems
3 multimedia systems
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)
 
File System Modules
File System ModulesFile System Modules
File System Modules
 
Android Multimedia Framework
Android Multimedia FrameworkAndroid Multimedia Framework
Android Multimedia Framework
 
How to see the log files through ( gui and cli) in cluster ontap netapp stora...
How to see the log files through ( gui and cli) in cluster ontap netapp stora...How to see the log files through ( gui and cli) in cluster ontap netapp stora...
How to see the log files through ( gui and cli) in cluster ontap netapp stora...
 
Linux device drivers
Linux device driversLinux device drivers
Linux device drivers
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 
CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)
 
Review of QNX
Review of QNXReview of QNX
Review of QNX
 
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
 
Presentation aix basic
Presentation   aix basicPresentation   aix basic
Presentation aix basic
 
Deft
DeftDeft
Deft
 
Audio and Video streaming.ppt
Audio and Video streaming.pptAudio and Video streaming.ppt
Audio and Video streaming.ppt
 
Fun with the Hak5 Rubber Ducky
Fun with the Hak5 Rubber DuckyFun with the Hak5 Rubber Ducky
Fun with the Hak5 Rubber Ducky
 
MediaPlayer Playing Flow
MediaPlayer Playing FlowMediaPlayer Playing Flow
MediaPlayer Playing Flow
 

Destacado

A slightly deeper dive into Stagefright
A slightly deeper dive into StagefrightA slightly deeper dive into Stagefright
A slightly deeper dive into StagefrightAlexy Joseph
 
Open Sourcing the Secret Sauce
Open Sourcing the Secret SauceOpen Sourcing the Secret Sauce
Open Sourcing the Secret SauceFITC
 
21st Century Crystal Ball
21st Century Crystal Ball21st Century Crystal Ball
21st Century Crystal BallFITC
 
(Re)aligning The Way 400,000 People Think
(Re)aligning The Way 400,000 People Think(Re)aligning The Way 400,000 People Think
(Re)aligning The Way 400,000 People ThinkFITC
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickPageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickFITC
 
Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015
Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015
Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015FITC
 
Building Tools for the Next Web
Building Tools for the Next WebBuilding Tools for the Next Web
Building Tools for the Next WebFITC
 
Breaking The Broken Web
Breaking The Broken WebBreaking The Broken Web
Breaking The Broken WebFITC
 
The Life of &lt;p>
The Life of &lt;p>The Life of &lt;p>
The Life of &lt;p>FITC
 
A New Era for Animators
A New Era for AnimatorsA New Era for Animators
A New Era for AnimatorsFITC
 
I HATE YOUR GAME with Bob Heubel
I HATE YOUR GAME with Bob HeubelI HATE YOUR GAME with Bob Heubel
I HATE YOUR GAME with Bob HeubelFITC
 
Fitc whats new in es6 for web devs
Fitc   whats new in es6 for web devsFitc   whats new in es6 for web devs
Fitc whats new in es6 for web devsFITC
 
Building Apps with Ember
Building Apps with EmberBuilding Apps with Ember
Building Apps with EmberFITC
 
Ryan Christiani I Heard React Was Good
Ryan Christiani I Heard React Was GoodRyan Christiani I Heard React Was Good
Ryan Christiani I Heard React Was GoodFITC
 
Improving Game Performance in the Browser
Improving Game Performance in the BrowserImproving Game Performance in the Browser
Improving Game Performance in the BrowserFITC
 
Front-end Tools: Sifting Through the Madness
 Front-end Tools: Sifting Through the Madness Front-end Tools: Sifting Through the Madness
Front-end Tools: Sifting Through the MadnessFITC
 
! or ? with Chip Kidd
! or ? with Chip Kidd! or ? with Chip Kidd
! or ? with Chip KiddFITC
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 
Pocket web gl sk
Pocket web gl skPocket web gl sk
Pocket web gl skFITC
 
The Browser Is Dead, Long Live The Web!
The Browser Is Dead, Long Live The Web!The Browser Is Dead, Long Live The Web!
The Browser Is Dead, Long Live The Web!FITC
 

Destacado (20)

A slightly deeper dive into Stagefright
A slightly deeper dive into StagefrightA slightly deeper dive into Stagefright
A slightly deeper dive into Stagefright
 
Open Sourcing the Secret Sauce
Open Sourcing the Secret SauceOpen Sourcing the Secret Sauce
Open Sourcing the Secret Sauce
 
21st Century Crystal Ball
21st Century Crystal Ball21st Century Crystal Ball
21st Century Crystal Ball
 
(Re)aligning The Way 400,000 People Think
(Re)aligning The Way 400,000 People Think(Re)aligning The Way 400,000 People Think
(Re)aligning The Way 400,000 People Think
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickPageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
 
Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015
Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015
Upgrading the Web with Douglas Crockford @ FITC's Web Unleashed 2015
 
Building Tools for the Next Web
Building Tools for the Next WebBuilding Tools for the Next Web
Building Tools for the Next Web
 
Breaking The Broken Web
Breaking The Broken WebBreaking The Broken Web
Breaking The Broken Web
 
The Life of &lt;p>
The Life of &lt;p>The Life of &lt;p>
The Life of &lt;p>
 
A New Era for Animators
A New Era for AnimatorsA New Era for Animators
A New Era for Animators
 
I HATE YOUR GAME with Bob Heubel
I HATE YOUR GAME with Bob HeubelI HATE YOUR GAME with Bob Heubel
I HATE YOUR GAME with Bob Heubel
 
Fitc whats new in es6 for web devs
Fitc   whats new in es6 for web devsFitc   whats new in es6 for web devs
Fitc whats new in es6 for web devs
 
Building Apps with Ember
Building Apps with EmberBuilding Apps with Ember
Building Apps with Ember
 
Ryan Christiani I Heard React Was Good
Ryan Christiani I Heard React Was GoodRyan Christiani I Heard React Was Good
Ryan Christiani I Heard React Was Good
 
Improving Game Performance in the Browser
Improving Game Performance in the BrowserImproving Game Performance in the Browser
Improving Game Performance in the Browser
 
Front-end Tools: Sifting Through the Madness
 Front-end Tools: Sifting Through the Madness Front-end Tools: Sifting Through the Madness
Front-end Tools: Sifting Through the Madness
 
! or ? with Chip Kidd
! or ? with Chip Kidd! or ? with Chip Kidd
! or ? with Chip Kidd
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Pocket web gl sk
Pocket web gl skPocket web gl sk
Pocket web gl sk
 
The Browser Is Dead, Long Live The Web!
The Browser Is Dead, Long Live The Web!The Browser Is Dead, Long Live The Web!
The Browser Is Dead, Long Live The Web!
 

Similar a Media Source Extensions

Streaming video to html
Streaming video to htmlStreaming video to html
Streaming video to htmljeff tapper
 
Standards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related effortsStandards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related effortsIMTC
 
MPEG DASH White Paper
MPEG DASH White PaperMPEG DASH White Paper
MPEG DASH White Paperidrajeev
 
On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...
On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...
On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...Amazon Web Services
 
Understanding MPEG DASH
Understanding MPEG DASHUnderstanding MPEG DASH
Understanding MPEG DASHSeung-Bum Lee
 
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...TelecomValley
 
05.m3 cms list-ofwebserver
05.m3 cms list-ofwebserver05.m3 cms list-ofwebserver
05.m3 cms list-ofwebservertarensi
 
haproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfhaproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfPawanVerma628806
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark AnalysisYoss Cohen
 
ivisa retreat-2019
ivisa retreat-2019ivisa retreat-2019
ivisa retreat-2019chavoosh
 
Windows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 updateWindows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 updateMingfei Yan
 
MPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and ConformanceMPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and ConformanceAlpen-Adria-Universität
 
System design for video streaming service
System design for video streaming serviceSystem design for video streaming service
System design for video streaming serviceNirmik Kale
 
Media Content Delivery Systems: 2nd Presentation
Media Content Delivery Systems: 2nd PresentationMedia Content Delivery Systems: 2nd Presentation
Media Content Delivery Systems: 2nd Presentationashbyb
 
An Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application DevelopmentAn Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application Developmenttrevorthornton
 
HTML5 Programming
HTML5 ProgrammingHTML5 Programming
HTML5 Programminghotrannam
 
An Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular Environments
An Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular EnvironmentsAn Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular Environments
An Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular EnvironmentsAlpen-Adria-Universität
 

Similar a Media Source Extensions (20)

Streaming video to html
Streaming video to htmlStreaming video to html
Streaming video to html
 
Standards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related effortsStandards' Perspective - MPEG DASH overview and related efforts
Standards' Perspective - MPEG DASH overview and related efforts
 
MPEG DASH White Paper
MPEG DASH White PaperMPEG DASH White Paper
MPEG DASH White Paper
 
On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...
On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...
On-demand & Live Streaming with Amazon CloudFront in the Post-PC World (MED30...
 
Understanding MPEG DASH
Understanding MPEG DASHUnderstanding MPEG DASH
Understanding MPEG DASH
 
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
SophiaConf2010 Présentation des Retours d'expériences de la Conférence du 08 ...
 
05.m3 cms list-ofwebserver
05.m3 cms list-ofwebserver05.m3 cms list-ofwebserver
05.m3 cms list-ofwebserver
 
haproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfhaproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdf
 
HAProxy
HAProxy HAProxy
HAProxy
 
Silverlight Wireshark Analysis
Silverlight Wireshark AnalysisSilverlight Wireshark Analysis
Silverlight Wireshark Analysis
 
ivisa retreat-2019
ivisa retreat-2019ivisa retreat-2019
ivisa retreat-2019
 
Windows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 updateWindows Azure Media Services June 2013 update
Windows Azure Media Services June 2013 update
 
MPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and ConformanceMPEG-DASH Reference Software and Conformance
MPEG-DASH Reference Software and Conformance
 
System design for video streaming service
System design for video streaming serviceSystem design for video streaming service
System design for video streaming service
 
Media Content Delivery Systems: 2nd Presentation
Media Content Delivery Systems: 2nd PresentationMedia Content Delivery Systems: 2nd Presentation
Media Content Delivery Systems: 2nd Presentation
 
An Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application DevelopmentAn Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application Development
 
HTML5 Programming
HTML5 ProgrammingHTML5 Programming
HTML5 Programming
 
TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.
 
Mm sys 2013-demo
Mm sys 2013-demoMm sys 2013-demo
Mm sys 2013-demo
 
An Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular Environments
An Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular EnvironmentsAn Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular Environments
An Evaluation of Dynamic Adaptive Streaming over HTTP in Vehicular Environments
 

Más de FITC

Cut it up
Cut it upCut it up
Cut it upFITC
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital HealthFITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript PerformanceFITC
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech StackFITC
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR ProjectFITC
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerFITC
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryFITC
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday InnovationFITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight WebsitesFITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is TerrifyingFITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanFITC
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)FITC
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameFITC
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare SystemFITC
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignFITC
 
The Power of Now
The Power of NowThe Power of Now
The Power of NowFITC
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAsFITC
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstackFITC
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFITC
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForFITC
 

Más de FITC (20)

Cut it up
Cut it upCut it up
Cut it up
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
 

Último

一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样ayvbos
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查ydyuyu
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiMonica Sydney
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfJOHNBEBONYAP1
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样ayvbos
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理F
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrHenryBriggs2
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...kajalverma014
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制pxcywzqs
 
一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理F
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...kumargunjan9515
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.krishnachandrapal52
 
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...meghakumariji156
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"growthgrids
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdfMatthew Sinclair
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理F
 
Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...
Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...
Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...MOHANI PANDEY
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdfMatthew Sinclair
 
Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...
Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...
Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...kumargunjan9515
 

Último (20)

一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
 
一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
 
Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.Meaning of On page SEO & its process in detail.
Meaning of On page SEO & its process in detail.
 
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理
 
Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...
Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...
Call girls Service Canacona - 8250092165 Our call girls are sure to provide y...
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...
Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...
Sensual Call Girls in Tarn Taran Sahib { 9332606886 } VVIP NISHA Call Girls N...
 

Media Source Extensions

  • 1. Media Source Extensions Streaming Video without Plugins Jeff Tapper Digital Primates @jefftapper
  • 2. Who am I? • Senior Consultant at Digital Primates – Building next generation client applications • Built video applications for many of the most watched live broadcasts • Developing Internet applications for 19 years • Author of 12 books on Internet technologies
  • 4. Agenda • Video and the Internet today • Understanding HTTP Streaming • What are the Streaming options without a plugin? • What is DASH • What is DASH-264 • Making it work in a browser • Questions
  • 5. Online video Options • Progressive Download • Real Time Protocols (RTP, RTMP, RTSP, etc) • HTTP Streaming (HDS, HLS, Smooth Streaming, etc)
  • 6. The challenge • Most agree that HTTP Streaming is the most efficient choice • Different devices support different streaming protocols • No one standard is currently supported ubiquitously • Results in media being served in several different formats to support the broadest range of devices
  • 7. What do browsers support? • Unfortunately, Progressive Download is the only ubiquitously supported option • Different Browsers support different video codec’s – H.264 – webM – VP8/VP9 – Etc. • Safari (iOs and MacOS only) natively supports HLS • MediaSource Extensions released in Chrome and IE11, betas in Safari and Firefox
  • 8. MediaSource Extensions (MSE) • MSE allow for pieces (segments) of media to be handed to the HTML5 video tag’s buffer directly. • This enables HTTP Streaming in HTML • Not universally supported, yet. • Currently (as of September 2014) an Editors Draft to the HTML Working Group
  • 9. What is MPEG-DASH  DASH – Dynamic Adaptive Streaming via HTTP  International open standard, developed and published by ISO  Addresses both simple and advanced use cases  Enables highest-quality multiscreen distribution and efficient dynamic adaptive switching  Enables reuse of existing content, devices and infrastructure  Attempts to unify to a single standard for HTTP Streaming
  • 10. DASH and codecs • The DASH specification is codec agnostic • Any existing or future codec can work with DASH • DASH manifest describes which codec is used • Allows ability for a single manifest to describe several different versions in different codecs
  • 11. DASH264 • H.264 is dominant format today • Many vendors and service providers are committed to supporting/enabling DASH264 • Provides support for today’s requirements such as DRM • H.264 is backed by rigorous testing and conformance
  • 12. DASH Industry Forum • Addressing the dramatic growth of broadband video by recommending a universal delivery format that provides end users with the best possible media experience by dynamically adapting to changing network conditions.
  • 13. DASH Industry Forum • Objectives: – promote and catalyze market adoption of MPEG-DASH – publish interoperability and deployment guidelines – facilitate interoperability tests – collaborate with standard bodies and industry consortia in aligning ongoing DASH standards development and the use of common profiles across industry organizations • Over 65 members • Visit http://dashif.org for more information • Released the DASH/264 standard
  • 14. Building a DASH player • We have built DASH players for several different platforms – Flash – Android – HTML5/JavaScript (dash.js) • DASH.js is available as an open source project (bsd3) on github • DASH.js is the reference player for the DASH Industry Forum (dashif.org)
  • 15. How to play a DASH Stream • Download Manifest • Parse Manifest • Determine optimal bandwidth for client • Initialize for bandwidth • Download Segment • Hand segment to MSE • Check Bandwidth to determine if change is necessary
  • 16. Understanding DASH structure • Three types of files – Manifest (.mpd) • XML file describing the segments – Initialization file • Contains headers needed to decode bytes in segments – Segment Files • Contains playable media • Includes: – 0…many video tracks – 0…many audio tracks
  • 17. DASH Manifest • Manifest contains: – Root node – 1 or more periods • Periods contain 1 adaptation set per video stream and • Periods contain 1 adaptation set per audio stream • Adaptation Sets contain: – Content Composition nodes (for each video or audio track) – 1 or more Representation node » Each representation describes a single bitrate » Representations contain data on finding the actual segments » Different ways a representation can describe segments
  • 18. Describing Representations • SegmentBase – Describes a stream with only a single Segment per bitrate – Can be used for Byte Range Requests • SegmentList – A SegmentList will contain a specific list of each SegmentURL (individual HTTP packet with media data) – Can be used for Byte Range Requests • SegmentTemplate – Defines a known url for the fragment with wildcards resolved at runtime to request a segments (see bbb.mpd) – Alternatively, can specify a list of segments based on duration
  • 19. SegmentList <Representation id="h264bl_hd" mimeType="video/mp4" codecs="avc1.42c01f" width="1280" height="720" startWithSAP="1" bandwidth="514864"> <SegmentList timescale="1000" duration="10000"> <Initialization sourceURL="mp4-main-multi-h264bl_hd-.mp4"/> <SegmentURL media="mp4-main-multi-h264bl_hd-1.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-2.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-3.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-4.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-5.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-6.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-7.m4s"/> <SegmentURL media="mp4-main-multi-h264bl_hd-8.m4s"/>
  • 20. SegmentTemplate fixed segment duration <AdaptationSet> <ContentComponent id="1" contentType="video"/> <SegmentTemplate initialization="BigBuckBunny_720p_1800kbps_44khz_track1_dash.mp4"/> <Representation id="1" mimeType="video/mp4“ codecs="avc1.64001f" width="1280" height="720“ startWithSAP="1" bandwidth="1809954"> <SegmentTemplate timescale="1000" duration="13809" media="bbb_seg_BigBuckBunny_720p_1800kbps_44khz_track1$Number$.m4s" startNumber="1"/> </Representation> </AdaptationSet>
  • 21. SegmentTemplate variable segment duration <AdaptationSet group="2" mimeType="video/mp4" par="16:9“ minBandwidth="475000“ maxBandwidth="6589000" minWidth="176" maxWidth="1680" minHeight="99" maxHeight="944“ segmentAlignment="true“ startWithSAP="1"> <SegmentTemplate timescale="1000" initialization="dash/ateam-video=$Bandwidth$.dash" media="dash/ateam-video=$Bandwidth$-$Time$.dash"> <SegmentTimeline> <S t="0" d="4171" /> <S d="2503" /> <S d="2961" /> <S d="2461" /> <S d="2127" r="2" /> …
  • 23. dash.js player • dash.js is a free open source player • Code available on github • Currently the base of several different production players • Recent uses include: – BBC live broadcasts – Wowza – EZDRM – And more!
  • 24. How to play a DASH Stream • Download Manifest • Parse Manifest • Determine optimal bandwidth for client • Initialize for bandwidth • Download Segment • Hand segment to MSE • Check Bandwidth to determine if change is necessary
  • 25. Tools used by dash.js Core Player • Dijon – DI / IOC Development • Jasmine – unit tests Web Site • AngularJS – Application Framework • Flat-ui – UI elements • Flot – Charting • Kendo - Components
  • 26. Class Structure • The player is divided into two main packages. • streaming – Contains the classes responsible for creating and populating the MediaSource buffers. These classes are intended to be abstract enough for use with any segmented stream (such as DASH, HLS, HDS and MSS). • dash – Contains the classes responsible for making decisions specifically related to Dash.
  • 28. MediaPlayer.js • Exposes the top level functions and properties to the developer (play, autoPlay, isLive, abr quality, and metrics). • The manifest URL and the HTML Video object as passed to the MediaPlayer.
  • 29. Context.js • The dependency mapping for the stream package. • The context is passed into the MediaPlayer object allowing for different MediaPlayer instances to use different mappings.
  • 30. Stream.js • Loads/refreshes the manifest. • Create SourceBuffers from MediaSource. • Create BufferManager classes to manage SourceBuffers. • Responds to events from HTML Video object. • For a live stream, the live edge is calculated and passed to the BufferController instances.
  • 31. Debug.js • Convenience class for logging methods. • Default implementation is to just use console.log(). • Extension point for tapping into logging messages.
  • 32. BufferController.js • Responsible for loading fragments and pushing the bytes into the SourceBuffer. • Once play() has been called a timer is started to check the status of the bytes in the buffer. • If the amount of time left to play is less than Manifest.minBufferTime the next fragment is loaded. • Records metrics related to playback.
  • 33. ManifestLoader.js • Responsible for loading manifest files. • Returns the parsed manifest object. FragmentLoader.js • Responsible for loading fragments. • Loads requests sequentially.
  • 34. AbrController.js • Responsible for deciding if the current quality should be changed. • The stream metrics are passed to a set of ‘rules’. • Methods: getPlaybackQuality(type, data)  type – The type of the data (audio/video).  data – The stream data.
  • 35. DownloadRatioRule.js • Validates that fragments are being downloaded in a timely manner. • Compares the time it takes to download a fragment to how long it takes to play out a fragment. • If the download time is considered a bottleneck the quality will be lowered.
  • 36. InsufficientBufferRule.js • Validates that the buffer doesn’t run dry during playback. • If the buffer is running dry continuously it likely means that the player has a processing bottleneck (video decode time is longer than playback time).
  • 38. DashContext.js • Defines dependency mapping specific to the dash package. – Parser – Index Handler – Manifest Extensions
  • 39. DashParser.js • Converts the manifest to a JSON object. • Converts duration and datetime strings into number/date objects. • Manages inheritance fields. – Many fields are inherited from parent to child nodes in DASH. – For example, a BaseURL can be defined in the <MPD> node and all <Representation> nodes inherit that value.
  • 40. DashHandler.js • Responsible for deciding which fragment URL should be loaded. • Methods:  getInitRequest(quality) – Returns an initialization request for a given quality, if available.  getSegmentRequestForTime(time, quality) – Returns a fragment URL to load for a given quality and a given time. Returns a Stream.vo.SegmentRequest object.  getNextSegmentRequest(quality) – Returns the next fragment URL to load. Assumes that getSegmentRequestForTime() has already been called.  getCurrentTime (quality) – Returns the time for the last loaded fragment index.
  • 41. DashHandler.js (cont’d) • Uses available information in the manifest (SegmentList, SegmentTemplate, SegmentBase). • When using a single, non-fragmented mp4 file the SIDX box will be loaded to determine byte ranges for segments.
  • 42. Flow 1. Create the Context and MediaPlayer instances. var context = new Dash.di.DashContext(), player = new MediaPlayer(context); 2. Initialize MediaPlayer and set manifest URL. player.startup(); player.setIsLive(false); player.attachSource(manifest_url); 3. Attach HTML Video element. video = document.querySelector(".dash-video-player video"), player.autoPlay = true; player.attachView(video);
  • 43. 2. Call play()on the MediaPlayer (if autoPlay = false). 3. The Stream object will be created and initialized with the manifest URL. 4. The manifest is loaded and then parsed. 5.MediaSource, SourceBuffers, and BufferControllers are created. – Create one BufferController per stream type (usually video and audio). 6. Set the duration of the MediaSource to the duration of the manifest (or infinity for a live stream). 7. If the stream is live, calculate the live edge. 8. Call play() on the HTML video element. 9. The BufferManager instances create a timer. When the timer ticks the state of the buffers is checked.
  • 44. BufferManager.validate() 1. Check to see if the buffers need more data. • Must be in a playing state. • Must not already be loading data. • Must require more data to be buffered. amountBuffered < manifest.minBufferTime 2. If automatic ABR is enabled check to see if the bitrate should be changed. • Ask AbrController for the new quality. • Rules will determine which bitrate to change to. 3. If initial playback, seeking, or the bitrate has changed load the initialization fragment (if available).
  • 45. 4. Ask the IndexHandler for the next fragment request. • If seeking pass the seek time to the IndexHandler. • Otherwise ask for the ‘next’ fragment. • Pass the bitrate to the IndexHandler. 6. The IndexHandler returns a SegmentRequest indicating what action the BufferManager should take next. • “download” – Download and append the fragment to the buffer. • “stall” – Wait because the IndexHandler is not ready. • “complete” – Signal that the stream has completed playback. 7. Repeat.
  • 46. Resources • DASH Industry Forum – http://www.dashif.org – Reference Player (http://dashif.org/reference/players/javascript) • Reference Player Source Code – https://github.com/Dash-Industry-Forum/dash.js • HTML Extensions – MSE: http://www.w3.org/TR/media-source/ – EME: http://www.w3.org/TR/encrypted-media/ • Twitter – @jefftapper – @digitalprimates