MediaSource: handle プロパティ

Limited availability

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

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

メモ: この機能はウェブワーカー内で利用可能です。

handleMediaSource インターフェイスの読み取り専用プロパティで、 MediaSourceHandle オブジェクトを返します。このオブジェクトは MediaSource のプロキシーであり、専用ワーカーからメインスレッドに戻り、HTMLMediaElement.srcObject プロパティを介してメディア要素に結び付けられます。

メモ: handle は専用ワーカー内の MediaSource インスタンスでのみ表示されます。

専用ワーカー内で作成された MediaSource オブジェクトは、それぞれ自分自身で個別の MediaSourceHandle を保有します。 handle ゲッターは常に、関連する専用ワーカー MediaSource インスタンス固有の MediaSourceHandle インスタンスを返します。ハンドルが既に postMessage() を使用してメインスレッドに移譲されている場合、ワーカー内のハンドルインスタンスは技術的に切り離され、再度移譲することはできません。

MediaSourceHandle オブジェクトインスタンスです。

handle プロパティは専用ワーカーの内部でアクセスすることができ、結果 MediaSourceHandle オブジェクトは postMessage() 呼び付けによってワーカーを作成したスレッド (この場合はメインスレッド) に移譲されます。

js
// Inside dedicated worker
let mediaSource = new MediaSource();
let handle = mediaSource.handle;
// Transfer the handle to the context that created the worker
postMessage({ arg: handle }, [handle]);

mediaSource.addEventListener("sourceopen", () => {
  // Await sourceopen on MediaSource before creating SourceBuffers
  // and populating them with fetched media — MediaSource won't
  // accept creation of SourceBuffers until it is attached to the
  // HTMLMediaElement and its readyState is "open"
});

メインスレッドでは、message イベント ハンドラーを介してハンドルを受け取り、 HTMLMediaElement.srcObject プロパティを介して <video> に取り付け、再生 動画を再生します。

js
worker.addEventListener("message", (msg) => {
  let mediaSourceHandle = msg.data.arg;
  video.srcObject = mediaSourceHandle;
  video.play();
});

メモ: MediaSourceHandleは、共有ワーカーまたはサービスワーカーからは正常に移譲できません。

仕様書

Specification
Media Source Extensions™
# dom-mediasource-handle

ブラウザーの互換性

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
handle

Legend

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

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

関連情報