MediaSource: endOfStream() メソッド

Limited availability

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

endOfStream()MediaSource インターフェイスのメソッドで、ストリームの終わりを通知します。

構文

js
endOfStream()
endOfStream(endOfStreamError)

引数

endOfStreamError 省略可

文字列で、ストリームの終わりに達したときに発生したエラーを表します。可能な値は次のとおりです。

network

再生を終了し、ネットワークエラーが発生したことを通知します。 これを使用して、メディアストリームに関連するカスタムエラーハンドラーを作成できます。 例えば、他のネットワーク要求とは別に、メディアチャンク要求を処理する関数があるとします。メディアチャンクを fetch() リクエストしてネットワークエラーが発生した場合、 endOfStream('network') を呼び出し、 UI に説明的なメッセージを表示し、ネットワークリクエストをすぐに再試行するか、ネットワークが(何らかのポーリングで)復旧するまで待ちます。

decode

再生を終了し、デコードエラーが発生したことを通知します。 これは、メディアデータの取得中に解析エラーが発生したことを示すために使用できます。 データが破損しているか、ブラウザーがデコード方法を知らないコーデックを使用してエンコードされている可能性があります。

返値

なし (undefined)。

例外

InvalidStateError DOMException

MediaSource.readyStateopen に等しくないか、 MediaSource.sourceBuffers 内の SourceBuffer オブジェクトが 1 つ以上更新されている(つまり、 SourceBuffer.updating プロパティが true である)場合に発生します。

次のスニペットは、Nick Desaulniers によって書かれた例からのものです(ライブで完全なデモを見るか、ソースをダウンロードしてさらに調査してください)。ここでは定義されていませんが、関数 getMediaSource()MediaSource を返します。

js
const assetURL = "frag_bunny.mp4";
// Blink はコーデックに関して特定する必要がある
// ./mp4info frag_bunny.mp4 | grep Codec
const mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';

let mediaSource;

if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) {
  mediaSource = getMediaSource();
  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
  const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  fetchAB(assetURL, (buf) => {
    sourceBuffer.addEventListener("updateend", () => {
      mediaSource.endOfStream();
      video.play();
      console.log(mediaSource.readyState); // ended
    });
    sourceBuffer.appendBuffer(buf);
  });
}

仕様書

Specification
Media Source Extensions™
# dom-mediasource-endofstream

ブラウザーの互換性

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
endOfStream

Legend

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

Full support
Full support
Partial support
Partial support
No support
No support

関連情報