- XMLHttpRequest(XHR)オブジェクトをFetch APIに置き換えます。
- Fetch APIではReadableStreamインターフェイスを使用せず、非同期で全体を読み取ります。
- ドキュメントオブジェクトモデル(DOM)の依存関係を回避します。
- 必要に応じてポリフィルを実装します。
Shaka Player
Vegaで実行するには、Shaka Playerを次のように変更します。-
W3CMediaのMedia Source APIのポリフィルを設定します。
例:
-
DOMParserの代わりにXMLDOM npmパッケージを使用し、フェッチのためのウィンドウを指定します。
navigator.userAgentの変更例: -
Documentオブジェクトをポリフィルで変更します。React Native ビデオコンポーネントを作成すると、
global.gvideoが設定またはクリアされます。 例: -
xml_util.jsで、Nodeインターフェイスを無効にします。 例:
Dash.jsプレーヤー
Vegaで実行するには、Dash.jsプレーヤーを次のように変更します。-
dash.jsのモジュールをインポートする前に、次の初期化を実行します。 -
HTTPLoader.jsのチェック処理で、XMLHTTPRequestの代わりにフェッチを使用するように変更します。コード内のいくつかのチェック処理により、XMLHTTPRequestが使用されることになりますが、これはセグメントをダウンロードできません(0バイトのセグメントがダウンロードされます)。 例:
HLS.jsプレーヤー
HLS.jsプレーヤーをVegaで動作させるには、プレーヤーに以下の変更を加えます。- Shaka Playerのフォークに適用するものと同じポリフィルクラスを、HLS.jsプレーヤーに適用します。
location.href、DOMExceptionクラス、HTMLVideoElementクラスのポリフィルを設定します。hls.jsのfetch-loaderプラグインを有効にします。- fetch-loaderプラグインで、
onProgressコールバックを無効にします(fetch.ReadableStreamはサポートされません)。 - progressive構成を無効にします(
fetch.ReadableStreamはサポートされません)。 - すべての字幕設定を無効にします(HLS.jsプレーヤーはCUE APIをサポートしていません)。
SourceBuffer.appendBufferメソッドにパッチを適用して、Uint8Arrayを受け入れるように変更します。- ワーカーを無効にします(ウェブワーカー(バックグラウンドプロセス)はサポートされません)。

