Shaka プレーヤーの移行に関する HLS

概要

Cast Web Receiver SDK は、複数のウェブ ストリーミング プロトコルを使用したコンテンツの再生をサポートしています。使用されるプロトコルに基づいて、SDK はプレーヤーを読み込み、コンテンツの再生を処理します。HLS コンテンツの場合は、メディア プレーヤー ライブラリ(MPL)が読み込まれます。DASH コンテンツの場合は、Shaka Player が読み込まれます。

今後、Cast SDK と Shaka Player のエンジニアリング チームは、Shaka Player での HLS コンテンツ再生のサポートを強化するために、取り組みを統合します。MPL では重要なアップデートが提供されなくなります。アプリの HLS コンテンツの再生には、Shaka Player を使用することをおすすめします。

Shaka Player のメリット

プレーヤーを変更すると、アプリには次のようなメリットがあります。

  • ユーザーにとってより堅牢なストリーミング セッション: 読み込み時間の失敗とレイテンシが改善されます。
  • 最新の HLS 機能の継続的な導入
  • Shaka Player のオープンソースの性質により、プレーヤーとコンテンツの互換性の問題の根本原因分析の明確化
  • オープンソースのプレーヤー コードベースにより、パートナーは Shaka Player プロジェクトに貢献できます。
  • 機能とバグの修正が本番環境に反映されるまでの時間が大幅に短縮: Shaka Player のリリース頻度は高く、Web Receiver SDK のリリースとは独立しています。
  • shakaVersion API による再生環境のより細かい制御
  • Google による再生サポートの強化: ロードマップに記載されているように、エンジニアリング リソースを Shaka Player での HLS 再生に集中させました。

タイムライン

Web Receiver SDK は、HLS コンテンツの再生のデフォルト プレーヤーとして Shaka Player を使用するように移行します。これは段階的なアプローチで行われ、パートナーが移行プロセスを進めることができます。

フェーズ 開始日 概要
1 2022 年 10 月 Cast Web Receiver SDK に、Shaka Player で HLS コンテンツを再生するためのオプトイン API が導入されました。
2 2025 年上半期 Cast Web Receiver SDK は、HLS コンテンツの再生でデフォルトのプレーヤーを Shaka プレーヤーに変更します。

Web Receiver SDK エンジニアリング チームはパフォーマンス重視のアプローチを採用しており、Shaka Player のパフォーマンスが MPL のベースライン パフォーマンスと同等になった場合にのみ、次のフェーズに進みます。これらの変更は、cast-sdk-announcements Google グループで発表され、このガイドで更新されます。

オプトイン

CAF バージョン 3.0.0105 以降では、HLS 再生に Shaka Player を使用するようにオプトインするためのアプリケーション レベルの構成があります。このバージョンでは、サポートされている Shaka Player バージョンの範囲から選択して読み込む API も導入されています。これらのフラグは、CastReceiverOptions クラスの useShakaForHls プロパティと shakaVersion プロパティで提供され、CastReceiverContext の開始時に評価されます。HLS 用 Shaka を有効にするアプリケーションは、最新の HLS の改善を利用するために、Shaka Player のバージョンを 4.3.4 以上に設定する必要があります。有効にするには、次のコード スニペットに沿って操作します。

const context = cast.framework.CastReceiverContext.getInstance();

let castReceiverOptions = new cast.framework.CastReceiverOptions();
castReceiverOptions.useShakaForHls = true;

context.start(castReceiverOptions);

コンテンツを検証する

パートナーは、本番環境のアプリで Shaka Player を使用することをオプトインする前に、Shaka Player でのコンテンツの再生を検証する必要があります。以下のコンテンツの各バリエーションをテストすることをおすすめします。

  • ストリームの種類: ライブまたは VOD
  • コンテナ形式: TS、MP4、またはエレメンタリー ストリーム
  • 中断や埋め込み広告を含むコンテンツ
  • 次のデバイス タイプでの再生: スマートディスプレイ、Chromecast ドングル、Android TV デバイス、Chromecast built-in 搭載テレビ、スマート スピーカー

エラーや予期しない動作が見つかった場合は、バグを報告してください。コンテンツに重大な再生エラーがないことを確認したら、変更を本番環境に push します。

オプトアウト

Web Receiver SDK は、タイムラインに従って、Shaka Player HLS コンテンツの再生のオプトアウト モデルに移行します。プロパティ useShakaForHls のデフォルト値が false から true に変更されます。その時点で、アプリケーションは、このプロパティを手動で false に設定することで、HLS 再生に MPL を使用するように選択できます。CastReceiverContext が開始されると、Web Receiver SDK は Shaka Player ではなく MPL の読み込みに戻ります。オプトアウトの方法については、以下のサンプルをご覧ください。

const context = cast.framework.CastReceiverContext.getInstance();

let castReceiverOptions = new cast.framework.CastReceiverOptions();
castReceiverOptions.useShakaForHls = false;

context.start(castReceiverOptions);

問題を報告する

HLS コンテンツの再生中に問題が発生した場合は、パートナー様には報告していただくようおすすめしています。前述のとおり、MPL は重要な更新を受け取れなくなります。MPL で問題が発生した場合は、ガイドの有効にするセクションの手順に沿って、Shaka Player に切り替えることで問題が解決するかどうかを確認します。問題が解決しない場合は、以下の手順に沿って操作します。また、プレーヤーを切り替えたときに別の問題が発生した場合も、以下の手順に沿って操作します。

  1. 問題を解決するには、shakaVersion を別のブランチ バージョンに設定してみてください。たとえば、4.3 ブランチで問題が発生した場合は、4.2.x バージョンまたは 3.3.x バージョンの最新リリースに設定してみてください。Shaka Player のリリースノートで、最も関連性の高い更新を含むリリースを確認してください。shakaVersion API には、リファレンス ドキュメントに記載されているように、サポートされている最小バージョンと最大バージョンがあります。回帰が確認された場合は、Shaka Player Issue Tracker で問題を報告してください。
  2. プレーヤーの構成パラメータを変更してみてください。Shaka Player は、PlayerConfiguration オブジェクトで構成できます。Web Receiver SDK はデフォルト値のセットを定義し、アプリケーションが PlaybackConfig オブジェクトの shakaConfig プロパティを介してこの構成を変更できるようにします。これは、プレーヤー インスタンスが作成される読み込み時に評価されます。詳しくは

    アプリケーションの構成とオプション。推奨される値は、Web Receiver SDK によって設定されるデフォルト値です。

  3. Shaka Player Issue Tracker または Cast Issue Tracker で問題が報告されているかどうかを確認します。バグにコメントを追加し、問題を説明する関連情報を追加します。

  4. Shaka Player デモサイトでコンテンツをテストします。コンテンツのデモサイトで問題が再現する場合は、Shaka Player プロジェクトにバグを報告してください。

  5. Cast エンドポイントの Shaka Player に固有の問題がある場合は、Cast Issue Tracker でバグを報告してください。

よくある質問

プレーヤーの変更は多くの質問を引き起こす可能性があります。以下に、移行プロセスのガイドとして、よくある質問とその回答を示します。

Shaka Player に移行する必要がありますか?

HLS コンテンツを使用しているパートナーは、できるだけ早く移行プロセスを開始することをおすすめします。これにより、アプリはより堅牢なストリーミング エクスペリエンスをユーザーに提供できます。その他のメリットについては、このガイドのShaka Player のメリットのセクションをご覧ください。パートナーは、Shaka Player を使用してアプリが正しく機能していることを確認し、スムーズな移行を実現する必要があります。パートナーがコンテンツが Shaka Player で適切に再生されることを事前に確認しない場合、一部のアプリはWeb Receiver SDK がオプトアウト モデルに移行されたときにリスクにさらされる可能性があります。

プレーヤーを変更する際の労力レベルはどの程度ですか?

パートナーは、テスト環境でアプリケーションとコンテンツをテストし、HLS と比較してユーザー エクスペリエンスが同等か、向上していることを確認する必要があります。そのためには、パートナーは内部環境でこの機能を有効にする必要があり、コンテンツが Shaka Player を使用して再生できることを徹底的にテストする必要があります。コンテンツのどの部分に重点を置くべきかについては、コンテンツの検証をご覧ください。検証が完了したら、Shaka Player が提供するメリットを活用するために、本番環境のアプリケーション環境でオプトインするフラグを追加する必要があります。大まかに言えば、ソフトウェア開発の変更は最小限で、パートナーが移行を成功させるために必要なのは主に QA 要件です。

まもなくアプリで HLS を使用してコンテンツをストリーミングする予定です。どうすればよいですか?

新しい統合では、再生に Shaka Player を使用するようにオプトインする必要があります。長期的には、アプリケーションのサポートが改善され、新しい HLS 機能とパフォーマンスの向上も利用できるようになります。新しい統合で問題が発生した場合は、できるだけ早くバグを報告して、エンジニアリング チームが問題を解決するための十分な時間を確保してください。アプリケーションの期限が厳しい場合は、その情報と影響もバグレポートに含めて、優先度を適切に設定します。Google のエンジニアリング チームは、ユーザーを適切にサポートするソリューションの提供に取り組んでおります。

コンテンツやアプリが Shaka Player で動作しません。どうすればよいですか?

Shaka Player プロジェクトまたは Cast プロジェクトにバグを報告する必要があります(問題を報告するをご覧ください)。Cast SDK エンジニアリング チームは、これらのトラッカーを積極的にモニタリングしており、問題が発生した場合はお客様と協力して解決に取り組みます。こうした問題を早期に発見すれば、修正を提供するまでの時間に余裕が生まれます。

MPL で重要なアップデートの提供が終了するとは、具体的にどういう意味ですか?

これまで、MPL は新しい HLS 機能を採用し、重要なアップデートを通じて重大なバグを修正してきました。MPL が受信しなくなったため、新しい HLS 機能はプレーヤーに追加されなくなります。同様に、MPL での HLS 再生に関する報告された問題は、MPL では修正されません。これらの問題は、再生に Shaka Player に切り替えることで解決できます。問題が解決しない場合は、Shaka Player で発生した関連する問題とともにバグを報告する必要があります。パートナーは MPL の使用を中止する必要があります。

コンテンツで Smooth Streaming プロトコルを使用していますが、これはアプリにどのような影響がありますか?

MPL バイナリは引き続きホストされ、レシーバ アプリケーションからアクセスできます。ただし、スムーズ ストリーミングの仕様が 4 年以上更新されていないため、スムーズ ストリーミング関連の機能リクエストとバグ修正はサポートされません。コンテンツのパフォーマンスの更新とサポートを引き続き受け取るには、DASH または HLS ストリーミング プロトコルを使用するようにコンテンツを移行することをおすすめします。

コンテンツで HLS プロトコルまたは Smooth Stream プロトコルを使用していない場合は、申請にどのような影響がありますか?

コンテンツ ライブラリでこれらのストリーミング プロトコルのいずれも使用していない場合は、移行の影響を受けません。申請内容の変更は必要ありません。