SourceBuffer.changeType()

The SourceBuffer method changeType() 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

sourceBuffer.changeType(type);

Parameters

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

Return value

undefined.

Exceptions

TypeError
The specified string is empty, rather than indicating a valid MIME type.
InvalidStateError
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
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 parent MediaSource is in its "ended" readyState, calling changeType() will transition the media source to the "open" readyState and fire a simple event named sourceopen at the parent media source.

Specifications

Specification Status Comment
Media Source Extensions
The definition of 'SourceBuffer.changeType' in that specification.
Recommendation Initial definition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support 70
Full support 70
No support 69 — 70
Disabled
Disabled From version 69 until version 70 (exclusive): this feature is behind the MediaSourceExperimental preference (needs to be set to true). To change preferences in Chrome, visit chrome://flags.
Edge No support NoFirefox Full support 63
Full support 63
No support 61 — 63
Disabled
Disabled From version 61 until version 63 (exclusive): this feature is behind the media.mediasource.experimental.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE ? Opera ? Safari ? WebView Android ? Chrome Android Full support 70
Full support 70
No support 69 — 70
Disabled
Disabled From version 69 until version 70 (exclusive): this feature is behind the MediaSourceExperimental preference (needs to be set to true). To change preferences in Chrome, visit chrome://flags.
Edge Mobile No support NoFirefox Android Full support 63
Full support 63
No support 61 — 63
Disabled
Disabled From version 61 until version 63 (exclusive): this feature is behind the media.mediasource.experimental.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android ? Safari iOS ? Samsung Internet Android ?

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
User must explicitly enable this feature.
User must explicitly enable this feature.

Document Tags and Contributors

Contributors to this page: Sheppy
Last updated by: Sheppy,