New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 109652 link

Starred by 78 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2014
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Feature



Sign in to add a comment

Support MPEG-DASH

Reported by n...@wlonk.com, Jan 9 2012

Issue description

Support MPEG Dynamic Adaptive Streaming over HTTP (MPEG-DASH), a new industry-supported standard that has been ratified as ISO/IEC 23009-1. 

DASH has several advantages over other streaming platforms (such as Apple’s HTTP Live Streaming, Microsoft’s Smooth Streaming, and Adobe’s HTTP Dynamic Streaming). Some observers expect the future HTTP streaming landscape to consist primarily of HLS and DASH.

Allowed container formats are MP4 and MPEG-2. The standard is codec-agnostic, so webm streams are possible.

More: The DASH Promoters Group (http://dashpg.com/?page_id=25)

Related:  Issue 54198  - Support HTTP Live Streaming (WontFix)
Related:  Issue 25573  - Add RTSP support to Chrome (WontFix)
 
Labels: -Type-Bug -Pri-2 Type-Feature Pri-3 OS-All
Status: Available
We plan to support DASH and similar adaptive streaming solutions by using a JavaScript library and the MediaSource API(http://html5-mediasource-api.googlecode.com/svn/trunk/draft-spec/mediasource-draft-spec.html). 

We have a demo adaptive streaming application that uses a DASH-like manifest & WebM. We are hoping to release publically in the next month or so. We'll iterate on the API & JavaScript code w/ the community that starts using it.

You can also see an example of Apple style Live Streaming w/ the Media Source API and WebM here (http://www.ioncannon.net/utilities/1515/segmenting-webm-video-and-the-mediasource-api/). I have not personally tested this code yet, but it looks like it is headed down the right path.
Hello. I am curious if there is any update on the DASH example? I'm mostly interested in how the duration information in a DASH initialization segment would be communicated to either Chromium or the video pipeline so that seeking, etc works in a live ondemand feed (something like on-demand transcoding where segments are streaming but the overall duration is known).

Comment 4 by Deleted ...@, Feb 17 2012

MediaSource seems like a great addition to Javascript. Web developers who would like the streaming protocol of their choice can implement this in Javascript if it's not available in chromium by default. But imagine a popular streaming protocol which is not implemented in chromium. Web developers from several video streaming sites might create their own implementation of said streaming protocol, ultimately leading to a fragmentation of implementations for that one protocol, where one could have more bugs than the other. Is this potentially a big problem, or are the odds low?

I really like the support for DASH and similar streaming solutions, the comment applies to streaming solutions that will not be supported by default.

Sorry if I completely misunderstand the concept of this API. I am but a first year student ;)
I also saw an example use of DASH with MediaSource at: http://www-itec.uni-klu.ac.at/dash/?page_id=746

Comment 6 by n...@wlonk.com, Sep 8 2012

YouTube MPEG-DASH / ISO BMFF / Media Source demo: http://dash-mse-test.appspot.com/
Nice demo (comment #6). If the bandwidth is not sufficient for real-time video, it does not wait till the video loads but keeps playing audio. Once the video segments load the video seems to play catch up with audio showing a hurried video - speedier than 1x. Might be a feature of AV sync logic of Chrome. 

On comment #2, probably this is the demo: http://html5-demos.appspot.com/static/media-source.html. This demo works with webm and with ISO BMFF (with modifications). But still not sure of one thing: If I try playing from the middle by skipping the first few segments (by setting var i = 3 say on line#162), it still plays the entire webm file! I also tried with ISO BMFF the same experiment: loaded the initial segment but skipped few segments after it. It does not play at all.

What does the media source API draft (http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html) say about ISO BMFF live feeds and random access? The draft (and DASH standard) seem to mandate initialization segment. Then, I should be able to skip to a random media segment after loading the initialization segment (for random access and also when a new web-client joins an ongoing live session). But as mentioned above this case does not seem to be working in Chrome yet. May be I should read the standard again on how to generate WebM/ISO BMFF segments compatible with Chrome for live streams.


Comment 8 by peppe6...@gmail.com, Jan 24 2013

(comment #7) Were you able to implement a live feed and random access? I'm also interested in allowing a client to join a live session by getting the initialization segment and then some out of order segments.

Comment 9 Deleted

(In reply to comment #8) After the initialization segment is apppended, media segments should be appended after compensating for the time stamp offsets.

Media Source API provides timestampOffset attribute of SourceBuffer interface for this purpose. The java script should somehow get to know the presentation time (say PTS)of the current media segment and then set the timestampOffset accordingly (timestampOffset = -PTS) before appending. This is one time operation.

There appears to be another way also: Instead of compensating the time stamp offset, you can set the currentTime attribute of video element to match with the PTS of 
current media segment.

I did not read the ever-updating MSE draft in recent days. I might have missed the latest changes to the above API. 
Project Member

Comment 11 by bugdroid1@chromium.org, Mar 10 2013

Labels: -Feature-Media -Area-WebKit Cr-Content Cr-Internals-Media
Project Member

Comment 12 by bugdroid1@chromium.org, Apr 6 2013

Labels: -Cr-Content Cr-Blink
Cc: bol...@chromium.org
How on earth did I miss the timestampOffset feature? And why has no one linked to the MPEG DASH JS implementation?

http://git.chromium.org/gitweb/?p=webm/webm-dash-javascript.git;a=summary
Labels: -Cr-Internals-Media Cr-Internals-Media-Source
Owner: wolenetz@chromium.org
Status: Fixed
MPEG DASH JS is implemented and supported in Chrome since <= M37.
Example page: http://dash-mse-test.appspot.com/dash-player.html
The MSE spec has largely stabilized, and implementation of most of it is complete in Chrome.

Remaining major pieces for compliance are support for SourceBuffer.*Tracks and TrackDefaults, as well as allowing sequence appendMode without requiring --enable-experimental-web-platform-features. (Inband TextTrack implementation refactoring will be left as a follow-up issue; it may not fully comply with MSE spec.)

Sign in to add a comment