SlideShare a Scribd company logo
1 of 37
Building a Dash-264 Player

    Jeff Tapper / Michael Labriola
            Digital Primates
     jtapper@digitalprimates.net
   mlabriola@digitalprimates.net
   Twitter: @jtapper / @mlabriola
Jeff Tapper
• Senior Consultant at Digital Primates
  – Building next generation client applications
• Built video applications for clients including
  …
• Developing Internet applications for 17 years
• Author of 12 books on Internet technologies
Who am I?
• Michael Labriola
• Senior Consultant at Digital Primates
  – Building next generation client applications
• Built video applications for clients including
  …well lots…
• Developing Internet applications for 17 years
• Author of 5 books on Internet technologies
Agenda
•   Video and the Internet today
•   Understanding HTTP Streaming
•   What is DASH
•   Flash as a video platform
•   The inner workings of DASH
•   The challenge
•   Getting video bytes info flash
•   Introducing the Digital Primates DASH-264 Player
•   Questions
Video is dominating the Internet
• Desktop: Video makes up 50% of traffic at peak periods
  –   notably 30% from Netflix and 11% from YouTube
• Mobile: Video traffic is growing exponentially
      Fixed Internet                                  Mobile Internet
Encode each segment
                                      HTTP Adaptive Streaming
  1           at multiple bitrates

                                         Split the video into
                              2          small segments
                                                                                                                                  Client splices together
                                                                                                                           5      and plays back
                                                            Make each segment
 0010101000
   01010
                 0101010100
                   01110
                                  0111010001
                                   1010101              3   addressable via a HTTP-URL                     0010101000010
                                                                                                                10
                                                                                                                               0101010100011
                                                                                                                                    10
                                                                                                                                               0111010001101
                                                                                                                                                   0101
    0010101000       0101010100       0111010001
      01010            01110           1010101

        0010101000       0101010100       0111010001
          01010            01110           1010101




                                                                                                           Client makes decision
Media Capture & Encoding                                                                               4   on which segment to
                                                                                                           download

                                                       Media Origin Servers       HTTP Cache Servers                                                           Client Devices
HTTP Streaming Landscape
•   Apple’s HTTP Live Streaming (HLS)
•   Microsoft’s Smooth Streaming
•   Adobe’s HTTP Dynamic Streaming (HDS)
•   And many more…
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 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
  – Different codecs store the actual video data
    differently
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
• Currently 46 members
• Visit http://dashif.org for more information
Members
Building a Desktop DASH player
• There are many technologies available for
  playing video in modern web browsers
  – Flash
  – SilverLight
  – HTML5
  – Etc.
• We focused on Flash for our first DASH player
  – Largest percentage of users can support it
Building Video Players in Flash
• Flash Player includes a native video player
  – flash.media.Video
• Video accepts a source from a Camera or a
  NetStream
  – flash.media.Camera
  – flash.net.NetStream
• Netstream supports:
  – Streaming FLV file
  – Manually appending FLV Bytes into its buffer
Flash Video (continued)
• NetStream and Video classes can be
  manipulated manually
• Open Source frameworks are available for
  easing the process
  – Adobe’s Open Source Media Framework (OSMF)
  – Open Video Player (OVP)
• We have chosen to build on OSMF
OSMF
• Extensible framework with plugin architecture
• Native support for DRM
• Contains classes to work with HTTP Streaming
  technologies
  – Only HDS is supported natively
  – Extensible architecture makes it possible to
    support new technologies
How to DASH in Flash
• Extract Video Bytes from DASH segments
• Wrap bytes in format understood by flash
  (FLV)
• Append FLV Bytes into Netstream
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:
  – Program Info (including title)
  – 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" />
…
Understanding MP4 – H.264 structure
• Each segment is binary, with a series of boxes
  contained within
• First 8 bytes of every box defines
  – Box type
  – Number of bytes for the box.
Initialization Segment
• FTYP – file type and compatibility
• FREE – free space
• MOOV – container of all metadata
  – MVHD – movie header
  – 1.* TRAK – container for individual stream data
     • TKHD – track header
     • MDIA – container for all media info
        – Lots of child boxes which contain more detailed stream info
Content Segments
• STYP - segment type
• SIDX - segment index
• MOOF -movie fragment
  – MFHD - movie fragment header
  – TRAF - track fragment
     • TFHD - track fragment header
     • TFDT - track fragment decode time
     • TRUN - track fragment run
• MDAT - media data container (actual media data)
  – Contains one or more samples (smallest described
    piece of content)
Pulling it all together
• Using OSMF, we wrote a DASH specific
  IndexHandler and FileHandler
• IndexHandler responsible for deciding url of
  next http request
• FileHandler responsible for parsing data from
  segments and returning FLV Bytes
DashIndexHandler
• When OSMF determines a new fragment
  needs to be loaded, it calls the
  DashIndexHandler.
• When playing, getNextFile is called
• When seeking, getFileForTime is called
• Both return an HTTPStreamRequest, which
  OSMF uses to request the proper segment
DashFileHandler
• When the requested file is returned, it is handed
  to the DashFileHandler for processing
  – initializeProcessing – gets decoder
  – processFileSegment – asks decoder to process data
• We are using a Decoder called MP4Decoder
• MP4Decoder returns FLVBytes for the data within
  the MDAT
• processFileSegment returns ByteArray (FLVBytes)
  to OSMF, for adding to the NetStream buffer
MP4Decoder
• processData() – iterates through all boxes in
  segment
  – Calls getNextBox()
• getNextBox knows how to process each
  specific box type
• When processing MDAT, individual samples
  are wrapped with FLVBytes
• FLVBytes wrap specific binary header around
  data, as required by NetStream.appendBytes()
Digital Primates DASH Player
• Currently our DASH player is not commercially
  available
• We use it as the basis for DASH players we
  build for our clients
• Initially built as a learning exercise to better
  understand DASH
Current DP Dash Player
• We currently support SegmentLists,
  SegmentTemplates and SegmentBase in manifest
  – Byte Range Requests only currently supported via
    Akamai
• We support Dynamic Adaptive Streaming for VOD
  Streams
• We have tested with streams up to 1080p
• We have tested with streams from several
  different encoders
DP Dash Player plans
• 4Q12                       • 1Q13
  – Basic Seek Fixes            – Initial JavaScript Player
  – Improved multi-channel – Support for DRM
    audio support               – Support for Enhanced
                                  seeking
  – Support for Live
                             • 2Q13
    Streams
                                – Investigate HEVC (h.265)
  – Continue to test and fix
    streams from more           – Initial Android Player
    encoding partners        • 3Q13
                                – Initial iOS Player
Resources
• GPAC
  – http://gpac.wp.mines-telecom.fr
  – Provides baseline test streams
  – Provides baseline player
• MP4Parser
  – http://code.google.com/p/mp4parser/
  – Open Source java project
  – Allows for display of contents within boxes
• DASH Industry Forum
  – http://www.dashif.org
Questions?

More Related Content

What's hot

Comments on carriage of timed text and visual overlays in MP4
Comments on carriage of timed text and visual overlays in MP4Comments on carriage of timed text and visual overlays in MP4
Comments on carriage of timed text and visual overlays in MP4Cyril Concolato
 
Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0Christopher Mueller
 
Understanding MPEG DASH
Understanding MPEG DASHUnderstanding MPEG DASH
Understanding MPEG DASHSeung-Bum Lee
 
MPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference SoftwareMPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference SoftwareAlpen-Adria-Universität
 
A Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP StreamingA Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP StreamingAlpen-Adria-Universität
 
GPAC Team Research Highlights
GPAC Team Research HighlightsGPAC Team Research Highlights
GPAC Team Research HighlightsCyril Concolato
 
Towards Peer-Assisted Dynamic Adaptive Streaming over HTTP
Towards Peer-Assisted Dynamic Adaptive Streaming over HTTPTowards Peer-Assisted Dynamic Adaptive Streaming over HTTP
Towards Peer-Assisted Dynamic Adaptive Streaming over HTTPStefan Lederer / bitmovin.net
 
Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...
Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...
Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...Förderverein Technische Fakultät
 
The Perfect Storm MPEG DASH with H.265 (HEVC) with HTML5
The Perfect Storm  MPEG DASH with H.265 (HEVC) with HTML5The Perfect Storm  MPEG DASH with H.265 (HEVC) with HTML5
The Perfect Storm MPEG DASH with H.265 (HEVC) with HTML5IMTC
 
Delivery of Timeline for External Data in MPEG-2 Transport Stream
Delivery of Timeline for External Data in MPEG-2 Transport StreamDelivery of Timeline for External Data in MPEG-2 Transport Stream
Delivery of Timeline for External Data in MPEG-2 Transport StreamCyril Concolato
 
Extensions for Hybrid Delivery using MPEG-2 TS and DASH
Extensions for Hybrid Delivery using MPEG-2 TS and DASHExtensions for Hybrid Delivery using MPEG-2 TS and DASH
Extensions for Hybrid Delivery using MPEG-2 TS and DASHCyril Concolato
 
Dynamic Adaptive Streaming over HTTP (DASH)
Dynamic Adaptive Streaming over HTTP (DASH)Dynamic Adaptive Streaming over HTTP (DASH)
Dynamic Adaptive Streaming over HTTP (DASH)Alpen-Adria-Universität
 
Introduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ ArtemisIntroduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ ArtemisYoshimasa Tanabe
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQBruce Snyder
 
Streaming Stored Video- Computer Networking
Streaming Stored Video- Computer Networking  Streaming Stored Video- Computer Networking
Streaming Stored Video- Computer Networking Mahbubur Rahman
 
Choosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate StreamingChoosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate StreamingBitmovin Inc
 

What's hot (20)

Comments on carriage of timed text and visual overlays in MP4
Comments on carriage of timed text and visual overlays in MP4Comments on carriage of timed text and visual overlays in MP4
Comments on carriage of timed text and visual overlays in MP4
 
Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0Dynamic Adaptive Streaming over HTTP/2.0
Dynamic Adaptive Streaming over HTTP/2.0
 
Understanding MPEG DASH
Understanding MPEG DASHUnderstanding MPEG DASH
Understanding MPEG DASH
 
libdash 2.0
libdash 2.0libdash 2.0
libdash 2.0
 
MPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference SoftwareMPEG-DASH Conformance and Reference Software
MPEG-DASH Conformance and Reference Software
 
Distributed DASH Dataset
Distributed DASH DatasetDistributed DASH Dataset
Distributed DASH Dataset
 
A Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP StreamingA Seamless Web Integration of Adaptive HTTP Streaming
A Seamless Web Integration of Adaptive HTTP Streaming
 
GPAC Team Research Highlights
GPAC Team Research HighlightsGPAC Team Research Highlights
GPAC Team Research Highlights
 
Towards Peer-Assisted Dynamic Adaptive Streaming over HTTP
Towards Peer-Assisted Dynamic Adaptive Streaming over HTTPTowards Peer-Assisted Dynamic Adaptive Streaming over HTTP
Towards Peer-Assisted Dynamic Adaptive Streaming over HTTP
 
HTTP Streaming of MPEG Media
HTTP Streaming of MPEG MediaHTTP Streaming of MPEG Media
HTTP Streaming of MPEG Media
 
Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...
Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...
Latest Developments of Scalable Vector Graphics (SVG) 2, With a Focus on Stre...
 
The Perfect Storm MPEG DASH with H.265 (HEVC) with HTML5
The Perfect Storm  MPEG DASH with H.265 (HEVC) with HTML5The Perfect Storm  MPEG DASH with H.265 (HEVC) with HTML5
The Perfect Storm MPEG DASH with H.265 (HEVC) with HTML5
 
Delivery of Timeline for External Data in MPEG-2 Transport Stream
Delivery of Timeline for External Data in MPEG-2 Transport StreamDelivery of Timeline for External Data in MPEG-2 Transport Stream
Delivery of Timeline for External Data in MPEG-2 Transport Stream
 
Dynamic Adaptive Streaming over HTTP Dataset
Dynamic Adaptive Streaming over HTTP DatasetDynamic Adaptive Streaming over HTTP Dataset
Dynamic Adaptive Streaming over HTTP Dataset
 
Extensions for Hybrid Delivery using MPEG-2 TS and DASH
Extensions for Hybrid Delivery using MPEG-2 TS and DASHExtensions for Hybrid Delivery using MPEG-2 TS and DASH
Extensions for Hybrid Delivery using MPEG-2 TS and DASH
 
Dynamic Adaptive Streaming over HTTP (DASH)
Dynamic Adaptive Streaming over HTTP (DASH)Dynamic Adaptive Streaming over HTTP (DASH)
Dynamic Adaptive Streaming over HTTP (DASH)
 
Introduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ ArtemisIntroduction to Apache ActiveMQ Artemis
Introduction to Apache ActiveMQ Artemis
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQ
 
Streaming Stored Video- Computer Networking
Streaming Stored Video- Computer Networking  Streaming Stored Video- Computer Networking
Streaming Stored Video- Computer Networking
 
Choosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate StreamingChoosing the Segment Length for Adaptive Bitrate Streaming
Choosing the Segment Length for Adaptive Bitrate Streaming
 

Viewers also liked

Live streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHLive streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHCyril Concolato
 
How Not To Code Flex Applications
How Not To Code Flex ApplicationsHow Not To Code Flex Applications
How Not To Code Flex Applicationsjeff tapper
 
Flex Unit 4 Feature Overview
Flex Unit 4 Feature OverviewFlex Unit 4 Feature Overview
Flex Unit 4 Feature Overviewjeff tapper
 
What’s under your skin
What’s under your skinWhat’s under your skin
What’s under your skinjeff tapper
 
Energy-Aware Wireless Video Streaming
Energy-Aware Wireless Video StreamingEnergy-Aware Wireless Video Streaming
Energy-Aware Wireless Video StreamingVideoguy
 
Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi
Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi
Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi All Good Things
 
Investigation of Quick Handover Algorithm for Wireless Video Streaming App
Investigation of Quick Handover Algorithm for Wireless Video Streaming AppInvestigation of Quick Handover Algorithm for Wireless Video Streaming App
Investigation of Quick Handover Algorithm for Wireless Video Streaming AppRajvi Jagirdar
 
Streaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.pptStreaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.pptVideoguy
 
Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit
Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit
Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit All Good Things
 
Oral Submucous Fibrosis - OSMF : Dr Sanjana Ravindra
Oral Submucous Fibrosis - OSMF : Dr Sanjana RavindraOral Submucous Fibrosis - OSMF : Dr Sanjana Ravindra
Oral Submucous Fibrosis - OSMF : Dr Sanjana RavindraDr. Sanjana Ravindra
 
Basics of Mpeg 4 3D Graphics Compression
Basics of Mpeg 4 3D Graphics CompressionBasics of Mpeg 4 3D Graphics Compression
Basics of Mpeg 4 3D Graphics CompressionMarius Preda PhD
 
ORAL SUBMUCOUS FIBROSIS- PPT
ORAL SUBMUCOUS FIBROSIS- PPTORAL SUBMUCOUS FIBROSIS- PPT
ORAL SUBMUCOUS FIBROSIS- PPTK BHATTACHARJEE
 
ORAL SUBMUCOUS FIBROSIS (OSMF)
ORAL SUBMUCOUS FIBROSIS (OSMF)ORAL SUBMUCOUS FIBROSIS (OSMF)
ORAL SUBMUCOUS FIBROSIS (OSMF)Shankar Hemam
 
التحولات الرقمية التلفزيون الرقمي
التحولات الرقمية   التلفزيون الرقمي التحولات الرقمية   التلفزيون الرقمي
التحولات الرقمية التلفزيون الرقمي Mamoun Matar
 

Viewers also liked (17)

Live streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASHLive streaming of video and subtitles with MPEG-DASH
Live streaming of video and subtitles with MPEG-DASH
 
How Not To Code Flex Applications
How Not To Code Flex ApplicationsHow Not To Code Flex Applications
How Not To Code Flex Applications
 
Flex Unit 4 Feature Overview
Flex Unit 4 Feature OverviewFlex Unit 4 Feature Overview
Flex Unit 4 Feature Overview
 
What’s under your skin
What’s under your skinWhat’s under your skin
What’s under your skin
 
Energy-Aware Wireless Video Streaming
Energy-Aware Wireless Video StreamingEnergy-Aware Wireless Video Streaming
Energy-Aware Wireless Video Streaming
 
Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi
Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi
Advanced Treatment for Reduced mouth Opening by Dr. Amit T. Suryawanshi
 
Investigation of Quick Handover Algorithm for Wireless Video Streaming App
Investigation of Quick Handover Algorithm for Wireless Video Streaming AppInvestigation of Quick Handover Algorithm for Wireless Video Streaming App
Investigation of Quick Handover Algorithm for Wireless Video Streaming App
 
Streaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.pptStreaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.ppt
 
Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit
Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit
Advanced Treatment of Oral Submucous Fibrosis by Dr. Amit
 
Slide1
Slide1Slide1
Slide1
 
Long case osmf
Long case osmfLong case osmf
Long case osmf
 
Osmf
OsmfOsmf
Osmf
 
Oral Submucous Fibrosis - OSMF : Dr Sanjana Ravindra
Oral Submucous Fibrosis - OSMF : Dr Sanjana RavindraOral Submucous Fibrosis - OSMF : Dr Sanjana Ravindra
Oral Submucous Fibrosis - OSMF : Dr Sanjana Ravindra
 
Basics of Mpeg 4 3D Graphics Compression
Basics of Mpeg 4 3D Graphics CompressionBasics of Mpeg 4 3D Graphics Compression
Basics of Mpeg 4 3D Graphics Compression
 
ORAL SUBMUCOUS FIBROSIS- PPT
ORAL SUBMUCOUS FIBROSIS- PPTORAL SUBMUCOUS FIBROSIS- PPT
ORAL SUBMUCOUS FIBROSIS- PPT
 
ORAL SUBMUCOUS FIBROSIS (OSMF)
ORAL SUBMUCOUS FIBROSIS (OSMF)ORAL SUBMUCOUS FIBROSIS (OSMF)
ORAL SUBMUCOUS FIBROSIS (OSMF)
 
التحولات الرقمية التلفزيون الرقمي
التحولات الرقمية   التلفزيون الرقمي التحولات الرقمية   التلفزيون الرقمي
التحولات الرقمية التلفزيون الرقمي
 

Similar to Building a Dash-264 Player

Approaches to Building Media Streaming Applications
Approaches to Building Media Streaming ApplicationsApproaches to Building Media Streaming Applications
Approaches to Building Media Streaming ApplicationsGlobalLogic Ukraine
 
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...Alan Quayle
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityAmir Zmora
 
About Voddler, our streaming technology Vnet and accelerating video-on-demand...
About Voddler, our streaming technology Vnet and accelerating video-on-demand...About Voddler, our streaming technology Vnet and accelerating video-on-demand...
About Voddler, our streaming technology Vnet and accelerating video-on-demand...Anders Sjöman
 
LMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming SolutionLMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming Solutionsilverfox2580
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source WorldLorenzo Miniero
 
T7L4.doc.doc
T7L4.doc.docT7L4.doc.doc
T7L4.doc.docVideoguy
 
Building video application on windows 8 with Windows Azure Media Services
Building video application on windows 8 with Windows Azure Media ServicesBuilding video application on windows 8 with Windows Azure Media Services
Building video application on windows 8 with Windows Azure Media ServicesMingfei Yan
 
Media Source Extensions
Media Source ExtensionsMedia Source Extensions
Media Source ExtensionsFITC
 
WiZE Streaming Vs Downloading
WiZE  Streaming Vs DownloadingWiZE  Streaming Vs Downloading
WiZE Streaming Vs Downloadingmaharastaman
 
P2P streaming with HTML5
P2P streaming with HTML5P2P streaming with HTML5
P2P streaming with HTML5Thierry Scelles
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Lorenzo Miniero
 
Video streaming software
Video streaming softwareVideo streaming software
Video streaming softwareVideoguy
 
WebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettWebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettMojo Lingo
 
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 to Building a Dash-264 Player (20)

Dos presentation by ahlam shakeel
Dos presentation by ahlam shakeelDos presentation by ahlam shakeel
Dos presentation by ahlam shakeel
 
Mm sys 2013-demo
Mm sys 2013-demoMm sys 2013-demo
Mm sys 2013-demo
 
Approaches to Building Media Streaming Applications
Approaches to Building Media Streaming ApplicationsApproaches to Building Media Streaming Applications
Approaches to Building Media Streaming Applications
 
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
 
About Voddler, our streaming technology Vnet and accelerating video-on-demand...
About Voddler, our streaming technology Vnet and accelerating video-on-demand...About Voddler, our streaming technology Vnet and accelerating video-on-demand...
About Voddler, our streaming technology Vnet and accelerating video-on-demand...
 
LMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming SolutionLMSE - Ebplus Streaming Solution
LMSE - Ebplus Streaming Solution
 
Multimedia streaming
Multimedia streamingMultimedia streaming
Multimedia streaming
 
IP BASED MEDIA SERVICES
IP BASED  MEDIA SERVICESIP BASED  MEDIA SERVICES
IP BASED MEDIA SERVICES
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
T7L4.doc.doc
T7L4.doc.docT7L4.doc.doc
T7L4.doc.doc
 
Building video application on windows 8 with Windows Azure Media Services
Building video application on windows 8 with Windows Azure Media ServicesBuilding video application on windows 8 with Windows Azure Media Services
Building video application on windows 8 with Windows Azure Media Services
 
Media Source Extensions
Media Source ExtensionsMedia Source Extensions
Media Source Extensions
 
WiZE Streaming Vs Downloading
WiZE  Streaming Vs DownloadingWiZE  Streaming Vs Downloading
WiZE Streaming Vs Downloading
 
P2P streaming with HTML5
P2P streaming with HTML5P2P streaming with HTML5
P2P streaming with HTML5
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
Video streaming software
Video streaming softwareVideo streaming software
Video streaming software
 
Wcf
WcfWcf
Wcf
 
WebRTC Overview by Dan Burnett
WebRTC Overview by Dan BurnettWebRTC Overview by Dan Burnett
WebRTC Overview by Dan Burnett
 
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
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Building a Dash-264 Player

  • 1. Building a Dash-264 Player Jeff Tapper / Michael Labriola Digital Primates jtapper@digitalprimates.net mlabriola@digitalprimates.net Twitter: @jtapper / @mlabriola
  • 2. Jeff Tapper • Senior Consultant at Digital Primates – Building next generation client applications • Built video applications for clients including … • Developing Internet applications for 17 years • Author of 12 books on Internet technologies
  • 3. Who am I? • Michael Labriola • Senior Consultant at Digital Primates – Building next generation client applications • Built video applications for clients including …well lots… • Developing Internet applications for 17 years • Author of 5 books on Internet technologies
  • 4. Agenda • Video and the Internet today • Understanding HTTP Streaming • What is DASH • Flash as a video platform • The inner workings of DASH • The challenge • Getting video bytes info flash • Introducing the Digital Primates DASH-264 Player • Questions
  • 5. Video is dominating the Internet • Desktop: Video makes up 50% of traffic at peak periods – notably 30% from Netflix and 11% from YouTube • Mobile: Video traffic is growing exponentially Fixed Internet Mobile Internet
  • 6. Encode each segment HTTP Adaptive Streaming 1 at multiple bitrates Split the video into 2 small segments Client splices together 5 and plays back Make each segment 0010101000 01010 0101010100 01110 0111010001 1010101 3 addressable via a HTTP-URL 0010101000010 10 0101010100011 10 0111010001101 0101 0010101000 0101010100 0111010001 01010 01110 1010101 0010101000 0101010100 0111010001 01010 01110 1010101 Client makes decision Media Capture & Encoding 4 on which segment to download Media Origin Servers HTTP Cache Servers Client Devices
  • 7. HTTP Streaming Landscape • Apple’s HTTP Live Streaming (HLS) • Microsoft’s Smooth Streaming • Adobe’s HTTP Dynamic Streaming (HDS) • And many more…
  • 8. 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
  • 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 – Different codecs store the actual video data differently
  • 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 • Currently 46 members • Visit http://dashif.org for more information
  • 15. Building a Desktop DASH player • There are many technologies available for playing video in modern web browsers – Flash – SilverLight – HTML5 – Etc. • We focused on Flash for our first DASH player – Largest percentage of users can support it
  • 16. Building Video Players in Flash • Flash Player includes a native video player – flash.media.Video • Video accepts a source from a Camera or a NetStream – flash.media.Camera – flash.net.NetStream • Netstream supports: – Streaming FLV file – Manually appending FLV Bytes into its buffer
  • 17. Flash Video (continued) • NetStream and Video classes can be manipulated manually • Open Source frameworks are available for easing the process – Adobe’s Open Source Media Framework (OSMF) – Open Video Player (OVP) • We have chosen to build on OSMF
  • 18. OSMF • Extensible framework with plugin architecture • Native support for DRM • Contains classes to work with HTTP Streaming technologies – Only HDS is supported natively – Extensible architecture makes it possible to support new technologies
  • 19. How to DASH in Flash • Extract Video Bytes from DASH segments • Wrap bytes in format understood by flash (FLV) • Append FLV Bytes into Netstream
  • 20. 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
  • 21. DASH Manifest • Manifest contains: – Program Info (including title) – 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
  • 22. 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
  • 23. 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"/>
  • 24. 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>
  • 25. 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" /> …
  • 26. Understanding MP4 – H.264 structure • Each segment is binary, with a series of boxes contained within • First 8 bytes of every box defines – Box type – Number of bytes for the box.
  • 27. Initialization Segment • FTYP – file type and compatibility • FREE – free space • MOOV – container of all metadata – MVHD – movie header – 1.* TRAK – container for individual stream data • TKHD – track header • MDIA – container for all media info – Lots of child boxes which contain more detailed stream info
  • 28. Content Segments • STYP - segment type • SIDX - segment index • MOOF -movie fragment – MFHD - movie fragment header – TRAF - track fragment • TFHD - track fragment header • TFDT - track fragment decode time • TRUN - track fragment run • MDAT - media data container (actual media data) – Contains one or more samples (smallest described piece of content)
  • 29. Pulling it all together • Using OSMF, we wrote a DASH specific IndexHandler and FileHandler • IndexHandler responsible for deciding url of next http request • FileHandler responsible for parsing data from segments and returning FLV Bytes
  • 30. DashIndexHandler • When OSMF determines a new fragment needs to be loaded, it calls the DashIndexHandler. • When playing, getNextFile is called • When seeking, getFileForTime is called • Both return an HTTPStreamRequest, which OSMF uses to request the proper segment
  • 31. DashFileHandler • When the requested file is returned, it is handed to the DashFileHandler for processing – initializeProcessing – gets decoder – processFileSegment – asks decoder to process data • We are using a Decoder called MP4Decoder • MP4Decoder returns FLVBytes for the data within the MDAT • processFileSegment returns ByteArray (FLVBytes) to OSMF, for adding to the NetStream buffer
  • 32. MP4Decoder • processData() – iterates through all boxes in segment – Calls getNextBox() • getNextBox knows how to process each specific box type • When processing MDAT, individual samples are wrapped with FLVBytes • FLVBytes wrap specific binary header around data, as required by NetStream.appendBytes()
  • 33. Digital Primates DASH Player • Currently our DASH player is not commercially available • We use it as the basis for DASH players we build for our clients • Initially built as a learning exercise to better understand DASH
  • 34. Current DP Dash Player • We currently support SegmentLists, SegmentTemplates and SegmentBase in manifest – Byte Range Requests only currently supported via Akamai • We support Dynamic Adaptive Streaming for VOD Streams • We have tested with streams up to 1080p • We have tested with streams from several different encoders
  • 35. DP Dash Player plans • 4Q12 • 1Q13 – Basic Seek Fixes – Initial JavaScript Player – Improved multi-channel – Support for DRM audio support – Support for Enhanced seeking – Support for Live • 2Q13 Streams – Investigate HEVC (h.265) – Continue to test and fix streams from more – Initial Android Player encoding partners • 3Q13 – Initial iOS Player
  • 36. Resources • GPAC – http://gpac.wp.mines-telecom.fr – Provides baseline test streams – Provides baseline player • MP4Parser – http://code.google.com/p/mp4parser/ – Open Source java project – Allows for display of contents within boxes • DASH Industry Forum – http://www.dashif.org