SourceBuffer: changeType() method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Note: This feature is available in Dedicated Web Workers.

The changeType() method of the SourceBuffer interface sets the MIME type that future calls to appendBuffer() should expect the new media data to conform to. This makes it possible to change codecs or container type mid-stream.

One scenario in which this is helpful is to support adapting the media source to changing bandwidth availability, by transitioning from one codec to another as resource constraints change.

Syntax

js
changeType(type)

Parameters

type

A string specifying the MIME type that future buffers will conform to.

Return value

None (undefined).

Exceptions

TypeError

Thrown if the specified string is empty, rather than indicating a valid MIME type.

InvalidStateError DOMException

Thrown if the SourceBuffer is not a member of the parent media source's sourceBuffers list, or the buffer's updating property indicates that a previously queued appendBuffer() or remove() is still being processed.

NotSupportedError DOMException

Thrown if the specified MIME type is not supported, or is not supported with the types of SourceBuffer objects present in the MediaSource.sourceBuffers list.

Usage notes

If the readyState property of the parent MediaSource is set to "ended", calling changeType() will set the readyState property to "open" and fire an event named sourceopen at the parent media source.

Specifications

Specification
Media Source Extensions™
# dom-sourcebuffer-changetype

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
changeType
Available in workers
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Experimental. Expect behavior to change in the future.

See also