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.
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.
js
addSourceBuffer(mimeType)
mimeType A string specifying the MIME type of the SourceBuffer to create and add to the MediaSource.
A SourceBuffer object representing the new source buffer that has been created and added to the media source.
InvalidAccessError DOMException
Thrown if the value specified for mimeType is an empty string rather than a valid MIME type.
InvalidStateError DOMException
Thrown if the MediaSource is not in the "open" readyState.
NotSupportedError DOMException
Thrown if the specified mimeType isn't supported by the user agent, or is not compatible with the MIME types of other SourceBuffer objects that are already included in the media source's sourceBuffers list.
QuotaExceededError DOMException
Thrown if the user agent can't handle any more SourceBuffer objects, or creating a new SourceBuffer using the given mimeType would result in an unsupported configuration of SourceBuffers.
The following snippet is from a simple example written by Nick Desaulniers (view the full demo live, or download the source for further investigation). The function getMediaSource(), which is not defined here, returns a MediaSource.
js
const assetURL = "frag_bunny.mp4"; // Need to be specific for Blink regarding codecs // ./mp4info frag_bunny.mp4 | grep Codec const mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"'; const mediaSource = getMediaSource(); if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) { console.log(mediaSource.readyState); // closed mediaSource.addEventListener("sourceopen", sourceOpen); video.src = URL.createObjectURL(mediaSource); } else { console.error("Unsupported MIME type or codec: ", mimeCodec); } function sourceOpen() { console.log(this.readyState); // open const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec); fetchAB(assetURL, (buf) => { sourceBuffer.addEventListener("updateend", () => { mediaSource.endOfStream(); video.play(); console.log(mediaSource.readyState); // ended }); sourceBuffer.appendBuffer(buf); }); }
| 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 | 11Only works on Windows 8+. |
15 | 8 | 4.4.3 | 25 | 41 | 14 | 13Exposed in Mobile Safari on iPad but not on iPhone. |
1.5 |
© 2005–2023 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