Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート
メインコンテンツへスキップ
Shaka PlayerやBitmovinなどのMedia Source Extension(MSE)プレーヤーでは、複数のDashメディアマニフェストの解析など、CPU負荷の高いタスクがJavaScriptで実行されます。このため、UIの応答性やアプリの滑らかさに影響が及ぶことがあります。この影響は、大きいDVRウィンドウで、マニフェストサイズの大きいライブTVを再生している場合に顕著に現れます。このドキュメントでは、XMLパーサーのネイティブ実装を利用してパフォーマンスを最適化する方法について説明します。

XML解析の実装

以下の関数を使用すると、XMLの解析をネイティブパーサーにオフロードできます。

registerNativePlayerUtils()

ネイティブ解析を使用するには、アプリでネイティブ関数を登録する必要があります。registerNativePlayerUtils()関数はアプリを登録し、アプリからネイティブXMLパーサーを呼び出せるようにします。この関数は、現在のプラットフォームがネイティブ解析をサポートしていればtrueを返し、それ以外の場合はfalseを返します。

boolean isNativeXmlParserSupported(playerName: string, playerVersion: string)

playerName: プレーヤーの名前を指定します。サポートされている値は”shaka”です。playerVersion: プレーヤーのバージョン。Shaka Playerの場合、サポートされているバージョンは4.6.18または4.3.6です。 アプリでは、特定のプレーヤーとプレーヤーバージョンでXML解析のネイティブサポートが利用できるかどうかを確認する必要があります。

nativeParseFromString (manifest, expectedRoot)

ShakaPlayerでは次の引数を渡す必要があります。 manifest:ダウンロードされたマニフェストを格納するArrayBuffer。expectedRoot: 解析されたXMLで想定されるルート要素。 global.nativeParseFromString()関数は、XML解析のネイティブ実装を提供し、登録後にプレーヤーによって呼び出されます。
関数をネイティブ関数として設定する必要があります。

unloadNativeXmlParser()

unloadNativeXmlParser()関数は、ネイティブパーサーのキャッシュを解放します。アプリでプレーヤーの使用が完了したときに呼び出します。通常、この呼び出しはプレーヤーのunload()関数の一部とします。

統合の変更

Shaka Player

ネイティブXMLパーサーは、Shaka Playerのバージョン4.6.18と4.3.6を対象にサポートされています。Shaka Playerに必要なすべてのパッチを適用し、それをアプリ内で使用する方法については、Shaka Playerを使用したアダプティブコンテンツ(HLS/DASH)の再生を参照してください。 XMLパーサーを正常に統合するには、次の点を確認する必要があります。
  • Shaka PlayerのビルドにShaka-Player-changes-for-Dash-nativization.patchが適用されていることを確認します。これにより、XML解析関数を登録するフックが有効になります。
  • ネイティブ化のリリースドロップの一部として、DOMParserPolyfillというポリフィルの追加も行われています。DOMParserPolyfill.tsがアプリのポリフィルの一部として含まれていることを確認します。
  • MiscPolyfill.tsファイルの更新されたリリースが、アプリのポリフィルの一部として含まれていることを確認します。このポリフィルは、基底のDomParserオブジェクトへの依存を削除するように更新されています。
これらの変更は、Shaka Playerの以下のバージョンから導入されています。
  • ShakaPlayer v4.6.18: shaka-rel-v4.6.18-r2.11.tar.gz
  • ShakaPlayer v4.3.6: shaka-rel-v4.3.6-r2.4.tar.gz
アプリでは、src/shakaplayer/ShakaPlayer.tsに以下の変更を加える必要があります。
  1. src/shakaplayer/ShakaPlayer.tsで、Shaka Playerの名前とバージョンがまだ定義されていない場合は定義します。
  2. 必要に応じて、ネイティブXML解析を有効または無効にするフラグを定義できます。たとえば、ネイティブ解析を有効にするための手順5では次のフラグを使用します。
  3. DOMParserPolyfillをインポートしてインストールします。
  4. nativeParseFromString()を呼び出します。
  5. ShakaPlayer.tsファイルにload()関数を追加して、ネイティブのXML解析に必要な機能が利用可能かどうかを確認します。機能が検証されたら、setNativeFunctions()を呼び出して、Shaka PlayerからnativeParseFromString()の実装をネイティブXMLパーサーに渡します。setNativeFunctions()は、引数として、XMLの解析中にShaka Playerによって呼び出される関数を受け取ります。
  6. ShakaPlayer.tsファイルにunload()関数を追加して、ネイティブのXML解析が有効になっているかどうかを確認します。有効になっている場合は、unloadNativeXmlParserを呼び出してパーサーの読み込みを解除します。
外部リリースのtarballに含まれているShakaPlayer.tsソースファイルには、これらの変更が参考として追加されています。
最終更新日 2026年10月26日