Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート
メインコンテンツへスキップ
Shaka Player、Hls.js、BitmovinなどのMedia Source Extensions(MSE)プレーヤーは、JavaScriptでCPU負荷の高いタスクを実行します。これには複数のHLSメディアマニフェストの解析が含まれ、UIの応答性やアプリの滑らかさに影響を及ぼす可能性があります。この影響は、大きいDVRウィンドウで、マニフェストサイズの大きいライブTVを再生している場合に特に顕著に現れます。このドキュメントでは、HLSプレイリストパーサーのネイティブ実装を利用してパフォーマンスを最適化する方法について説明します。 ネイティブ解析に移行するとパフォーマンスが大幅に向上しますが、すべてのケースでネイティブHLSパーサーサポートへの切り替えが必要になるわけではありません。この最適化の効果が見込めるのは、大きいDVRウィンドウでライブTVの再生を処理するアプリです。このようなアプリでは、大きいマニフェストの更新と解析が頻繁に行われ、その結果JSスレッドのブロックが頻繁に発生し、キーイベントやUIの処理が遅延しやすいためです。また、アプリでこの最適化を使用して、ビデオの開始時のレイテンシを改善することもできます。

Vega向けReact Native API

以下で説明する関数を使用すると、HLSマニフェストの解析をネイティブレイヤーにオフロードできます。

手順1:ネイティブ解析を有効にする

ネイティブ解析を有効にするには、アプリでregisterNativePlayerUtils()を呼び出して、ネイティブ関数を登録する必要があります。デバイスがネイティブ関数をサポートしている場合、この呼び出しはtrueを返します。それ以外の場合はfalseを返します。この呼び出しによってアプリが登録され、ネイティブHLSパーサーの呼び出しが可能になります。

手順2:HLSプレイリスト解析のネイティブサポートが利用可能かどうかを確認する

特定のプレーヤーとプレーヤーバージョンでHLSプレイリスト解析のネイティブサポートが利用可能かどうかを確認するには、isNativeHlsParserSupported()を呼び出して次のパラメーターを渡します。
  • playerName:プレーヤーの名前。サポートされている値は”shaka”と”hlsjs”です。
  • playerVersion:プレーヤーのバージョン。“shaka”の場合は”4.6.18”または”4.3.6”です。“hlsjs”の場合は”1.5.11”です。
ネイティブHLSパーサーをサポートするプレーヤーのバージョン:
  • ShakaPlayerバージョン”4.6.18”および”4.3.6”
  • Hls.jsバージョン”1.5.11”

手順3:マニフェスト解析関数を呼び出す

HLSマニフェストの解析はglobal.parseHlsManifest関数に実装されています。アプリでは、まず自身を登録してから解析関数を呼び出す必要があります。
マニフェストを解析するには、parseHlsManifest()を呼び出して以下のパラメーターを渡します。
  • playerName:プレーヤー名を表す文字列。“shaka”を指定します。
  • playerVersion:プレーヤーのバージョンを表す文字列。“4.6.18”または”4.3.6”を指定します。
  • absoluteUri:マニフェストの絶対URIを表す文字列。
  • manifest:ダウンロードされたマニフェストを格納するArrayBuffer。
  • shaka:ShakaPlayerの場合のみ、次のセクションに示すようにShakaオブジェクトを渡します。
次のセクションでは、パラメーターの使用方法について詳しく説明します。

統合の変更

このセクションでは、前の手順で紹介した関数の使用方法について詳しく説明します。
ネイティブHLSパーサーは、Shaka Playerのバージョン4.6.18と4.3.6を対象にサポートされています。Shaka Playerに必要なすべてのパッチを適用し、それをアプリ内で使用する方法については、Shaka Playerを使用したアダプティブコンテンツ(HLS/DASH)の再生を参照してください。注: プレーヤーをビルドする前に、Shaka PlayerのリリースtarballにShaka-Player-optimizations.patchファイルが含まれていて、そのパッチが適用されていることを確認してください。これにより、フックでHLS解析関数を登録できるようになります。このパッチは以下のバージョンから含まれています。
  • ShakaPlayer v4.6.18: shaka-rel-v4.6.18-r2.9.tar.gz
  • ShakaPlayer v4.3.6: shaka-rel-v4.3.6-r2.2.tar.gz
この機能を使用するには、アプリのsrc/shakaplayer/ShakaPlayer.tsファイルに次の変更を加えます。
  1. src/shakaplayer/ShakaPlayer.tsで、Shaka Playerのバージョンを定義します。
  2. ネイティブ解析を有効または無効にするフラグを定義できます。例として、ネイティブ解析を有効にする手順4では次のフラグを使用します。
  3. parseHlsManifest()の呼び出しを追加します。
  4. Shaka Playerを読み込む前に、parseHlsManifest()関数の実装を登録します。setNativeFunctions()関数を使用すると、アプリからネイティブのparseHlsManifest()関数に実装を渡すことができます。引数として、HLSの解析中にShaka Playerによって呼び出される関数を受け取ります。
    これらの統合の変更は、外部リリースtarballに含まれているShakaPlayer.tsにも実装されており、参考として使用できます。

サポートされるタグ

Shaka Player
  • ShakaPlayer v4.6.18:Shaka Playerバージョンv4.6.18では、すべてのタグがサポートされます。
  • ShakaPlayer v4.3.6:Shaka Playerバージョンv4.3.6では、すべてのタグがサポートされます。
Hls.jsプレーヤー 以下の一覧のタグがサポートされます。 メディアプレイリスト
  • EXT_X_VERSION
  • EXT_X_TARGETDURATION
  • EXT_X_MEDIA_SEQUENCE
  • EXT_X_DISCONTINUITY_SEQUENCE
  • EXT_X_PLAYLIST_TYPE
  • EXT_X_ENDLIST
メディアセグメント
  • EXTINF
  • EXT_X_BYTERANGE
  • EXT_X_DISCONTINUITY
  • EXT_X_PROGRAM_DATE_TIME
  • EXT_X_KEY
  • EXT_X_MAP
これらのタグの説明については、RFC 8216(英語のみ)を参照してください。

トラブルシューティング

  • 変更の統合後、以下のログエントリが表示される場合、ネイティブ化は有効になっていません。有効にするには、ネイティブ化を有効にするフラグを設定します。フラグの設定の例については、Shaka Playerの統合の手順2を参照してください。 hlsjs: native playlist parsing is disabled
  • 変更の統合後、以下のログエントリが表示される場合、ネイティブ化は有効になっていません。最も考えられる原因として、Vega OSのリリースバージョンに互換性がなく、ネイティブ化に必要な変更が実装されていない可能性があります。使用しているバージョンがOS 1.1 (201010432050)以降であることを確認してください。 hlsjs: native offload not enabled!

最終更新日 2026年10月27日