MediaSource.addSourceBuffer() - Web APIs 编辑
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
DOMString
specifying the MIME type of theSourceBuffer
to 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
InvalidAccessError
- The value specified for
mimeType
is an empty string rather than a valid MIME type. InvalidStateError
- The
MediaSource
is not in the"open"
readyState
. NotSupportedError
- The specified
mimeType
isn't supported by the user agent, or is not compatible with the MIME types of otherSourceBuffer
objects that are already included in the media source'ssourceBuffers
list. QuotaExceededError
- The user agent can't handle any more
SourceBuffer
objects, or creating a newSourceBuffer
using the givenmimeType
would result in an unsupported configuration ofSourceBuffer
s.
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
Specification | Status | Comment |
---|---|---|
Media Source Extensions The definition of 'addSourceBuffer()' in that specification. | Recommendation | Initial definition. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论