このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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

ブラウザーの互換性

関連情報