MediaSource.addSourceBuffer()
The addSourceBuffer() method of the MediaSource interface creates a new SourceBuffer of the given MIME type and adds it to the MediaSource's sourceBuffers list. The new SourceBuffer is also returned.
Syntax
var sourceBuffer = mediaSource.addSourceBuffer(mimeType);
Parameters
mimeType-
A
DOMStringspecifying the MIME type of theSourceBufferto create and add to theMediaSource.
Return value
A SourceBuffer object representing the new source buffer that has been created and added to the media source.
Exceptions
-
InvalidAccessErrorDOMException -
Thrown if the value specified for
mimeTypeis an empty string rather than a valid MIME type. -
InvalidStateErrorDOMException -
Thrown if the
MediaSourceis not in the"open"readyState. -
NotSupportedErrorDOMException -
Thrown if the specified
mimeTypeisn't supported by the user agent, or is not compatible with the MIME types of otherSourceBufferobjects that are already included in the media source'ssourceBufferslist. -
QuotaExceededErrorDOMException -
Thrown if the user agent can't handle any more
SourceBufferobjects, or creating a newSourceBufferusing the givenmimeTypewould result in an unsupported configuration ofSourceBuffers.
Example
The following snippet is from a simple example written by Nick Desaulniers (view the full demo live, or download the source for further investigation.)
var assetURL = 'frag_bunny.mp4'; // Need to be specific for Blink regarding codecs // ./mp4info frag_bunny.mp4 | grep Codec var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"'; if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) { var mediaSource = new MediaSource; //console.log(mediaSource.readyState); // closed video.src = URL.createObjectURL(mediaSource); mediaSource.addEventListener('sourceopen', sourceOpen); } else { console.error('Unsupported MIME type or codec: ', mimeCodec); } function sourceOpen (_) { //console.log(this.readyState); // open var mediaSource = this; var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec); fetchAB(assetURL, function (buf) { sourceBuffer.addEventListener('updateend', function (_) { mediaSource.endOfStream(); video.play(); //console.log(mediaSource.readyState); // ended }); sourceBuffer.appendBuffer(buf); }); };
Specifications
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
addSourceBuffer |
23 |
12 |
42 |
11
Only works on Windows 8+.
|
15 |
8 |
4.4.3 |
25 |
41 |
14 |
13
Exposed in Mobile Safari on iPad but not on iPhone.
|
1.5 |
See also
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaSource/addSourceBuffer