SourceBuffer.abort()

草案
このページは完成していません。

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

SourceBuffer インターフェイスの abort() メソッドは、現在のセグメントを打ち切り、セグメントパーサーをリセットします。

構文

sourceBuffer.abort();

パラメーター

なし。

戻り値

undefined

例外

例外 説明
InvalidStateError 親メディアソースの MediaSource.readyState プロパティが open と等しくないか、この SourceBufferMediaSource から取り除かれています。

abort() の仕様の説明はやや混乱します。 例えば、パーサーの状態のリセット(reset parser state)のステップ1を検討してください。 MSE API は完全に非同期ですが、この手順は同期(ブロッキング)操作を示唆しているように見えますが、これは意味がありません。

つまり、現在の実装は、ソースバッファで発生している現在の追加(またはその他)操作を停止し、すぐに操作を再開したい特定の状況で役立ちます。 例えば、次のコードを検討してください。

sourceBuffer.addEventListener('updateend', function (_) {
  ...
});

sourceBuffer.appendBuffer(buf);

appendBuffer の呼び出し後、updateend イベントが発生する前(つまり、バッファは追加されているが、操作はまだ完了していない)に、ユーザーが新しいポイントを探して動画を「スクラブ」するとします。 この場合、ソースバッファで abort() を手動で呼び出して現在のバッファのデコードを停止し、動画の現在の新しい位置に関連する新しく要求されたセグメントを取得して追加します。

Nick Desaulnier の bufferWhenNeeded デモで同様の動作を確認できます。 48行目では、イベントリスナーが再生中の動画に追加されseek() という関数が seeking イベントが発生したときに実行されます。 行92〜101では、seek() 関数が定義されています。 ここで、MediaSource.readyStateopen に設定されている場合、abort() が呼び出されることに注意してください。 つまり、新しいソースバッファを受信する準備ができていることを意味します。 この時点で、現在のセグメントを打ち切り、新しいシーク位置のセグメントを取得するだけの価値があります(checkBuffer() および getCurrentSegment() を参照)。

仕様

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

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
abortChrome 完全対応 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 (needs to be set to true). 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 未対応 なしOpera Android 完全対応 14Safari iOS 未対応 なしSamsung Internet Android 完全対応 2.0

凡例

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

関連情報