MediaSource.addSourceBuffer()

MediaSource インターフェイスの addSourceBuffer() メソッドは、指定された MIME タイプの新しい SourceBuffer を作成し、MediaSourcesourceBuffers リストに追加します。 新しい SourceBuffer も返されます。

構文

var sourceBuffer = mediaSource.addSourceBuffer(mimeType);

パラメーター

mimeType
MediaSource に作成して追加する SourceBuffer の MIME タイプを指定する DOMString

戻り値

作成され、メディアソースに追加された新しいソースバッファを表す SourceBuffer オブジェクト。

例外

InvalidAccessError
mimeType に指定された値は、有効な MIME タイプではなく空の文字列です。
InvalidStateError
MediaSourcereadyState"open" でありません。
NotSupportedError
指定された mimeTypeユーザーエージェントでサポートされていないか、メディアソースの sourceBuffers リストに既に含まれている他の SourceBuffer オブジェクトの MIME タイプと互換性がありません。
QuotaExceededError
ユーザーエージェントはこれ以上 SourceBuffer オブジェクトを処理できないか、指定された mimeType を使用して新しい SourceBuffer を作成すると、SourceBuffer の構成がサポートされなくなります

次のスニペットは、Nick Desaulniers によって書かれた簡単な例からのものです(ライブで完全なデモを見るか、ソースをダウンロードしてさらに調査してください)。

var assetURL = 'frag_bunny.mp4';
// Blink はコーデックに関して特定する必要がある
// ./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('サポートされていない MIME タイプまたはコーデック: ', 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);
  });
};

仕様

仕様 状態 コメント
Media Source Extensions
addSourceBuffer() の定義
勧告 初期定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
addSourceBuffer
実験的
Chrome 完全対応 23Edge 完全対応 12Firefox 完全対応 42
完全対応 42
未対応 25 — 42
補足 無効
補足 Limited support to a whitelist of sites, for example YouTube, Netflix, and other popular streaming sites. The whitelist was removed when Media Source Extensions was enabled by default in Firefox 42.
無効 From version 25 until version 42 (exclusive): this feature is behind the media.mediasource.enabled preference. To change preferences in Firefox, visit about:config.
IE 完全対応 11
補足
完全対応 11
補足
補足 Only works on Windows 8+.
Opera 完全対応 15Safari 完全対応 8WebView Android 完全対応 4.4.3Chrome Android 完全対応 25Firefox Android 完全対応 41Opera Android 完全対応 14Safari iOS 未対応 なしSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報