Brightcove Player サンプル:ライブ用カスタム エラー メッセージ

このトピックでは、利用できないライブ動画ストリームを再生しようとした際に、カスタムのオーバーレイ画像を表示する方法について説明します。

プレーヤー例

プレーヤーはライブ ストリームに接続できません。ModalDialog オブジェクトを作成し、その中にカスタム画像を配置してから ModalDialog を表示します。ModalDialog が閉じられた場合は、デフォルトのエラーが表示されます。

See the Pen 18199-live-custom-error-message by Brightcove Learning Services (@rcrooks1969) on CodePen.

ソースコード

GitHub 上の完全なソリューションを参照してください。

CodePen の使い方

上記の CodePen を効果的に利用するためのヒントを以下に示します。

  • Result ボタンをクリックして、プレーヤーの実際の表示を切り替えます。
  • HTML/CSS/JS ボタンをクリックして、いずれか 1 つのコード種別を表示します。
  • このドキュメントの後半では、アプリケーションで使用しているロジック、フロー、スタイルについて Player/HTML configurationApplication flowApplication styling セクションで説明します。これらの情報を最も効率よく確認するには、次の手順をおすすめします。
    1. CodePen の EDIT ON CODEPEN ボタンをクリックして、コードを別のブラウザ/ブラウザ タブで表示します。
    2. CodePen で表示するコードを調整します。CodePen 内の各コードセクションの幅は変更できます。
    3. 別のブラウザ/ブラウザ タブで プレーヤー/HTML 設定アプリケーション フローアプリケーションのスタイリング セクションを表示します。コードの説明を読みながら、同時にコードも確認できます。

開発シーケンス

推奨する開発手順は以下のとおりです。

  1. Video タグ埋め込みのプレーヤー実装を使用して、プレーヤー、プラグイン、CSS(必要な場合)の機能をテストする
  2. プラグインの JavaScript と CSS をローカルテスト用に別ファイルへ分離する
  3. 問題を解消したら、プラグイン コードと CSS をサーバーへ配置する
  4. Studio を使用して、プレーヤーにプラグインと CSS を追加する
  5. iframe 実装の方が適していると判断した場合は、Videoタグ埋め込みの実装を置き換える(次のセクションで詳細)

これらの手順の詳細については、ステップ・バイ・ステップ:プラグイン開発< ガイドを参照してください。

iframe か Videoタグ 埋め込みか

Brightcove プレーヤー向けの拡張機能を開発する際は、コードが iframe 実装と Videoタグ埋め込み実装のどちらに適しているかを決める必要があります。ベストプラクティスとしては、iframe 実装で使用するプラグインを作成することを推奨します。iframe プレーヤーを使用する利点は以下のとおりです。

  • 既存の JavaScript や CSS との競合がない
  • 自動的にレスポンシブ対応
  • ソーシャルメディア アプリ(または動画が他アプリへ「移動」する必要がある場合)で使いやすい

一方、Videoタグ埋め込みプレーヤーの統合は複雑になる場合がありますが、実装ページがプレーヤーと通信する必要があるときは、この方式を計画的に選択します。一般化すると、以下のような場合に適しています。

  • 実装ページのコードがプレーヤーのイベントを監視して処理する必要がある
  • プレーヤーが実装ページのスタイルを使用する
  • iframe によりアプリのロジックが失敗する(例:実装ページからのリダイレクトなど)

最終的な実装で iframe コードを使わない場合でも、Videoタグ埋め込みコードにおいて、JavaScript はプラグイン化し、CSS は別ファイルにすることで、ロジックをカプセル化し、複数のプレーヤーで容易に再利用できます。

使用する API/プラグインのリソース

API メソッド API イベント API プロパティ
addChild() error player.error().code
on() modalclose    
duration()    
player.errorDisplay.hide()    
player.errorDisplay.show()    

プレーヤー/HTML 設定

このセクションでは、プレーヤー作成時に必要な特別な設定について説明します。加えて、Videoタグ埋め込みのプレーヤー実装コード以外で、ページに追加が必要な他の HTML 要素についても説明します。

プレーヤー設定

このサンプルで作成する Brightcove プレーヤーには、特別な設定は不要です。

その他の HTML

ページに追加する他の HTML 要素はありません。

アプリケーションのフロー

このアプリケーションの基本ロジックは以下のとおりです。

  • ModalDialog のインスタンスを作成し、その中にカスタム画像を配置する。
  • エラーを監視し、該当するエラータイプであればカスタム ModalDialog を表示する。
  • 視聴者がカスタム ModalDialog を閉じた場合は、デフォルトのエラー メッセージを表示する。

HTML の div 要素を作成する

以下のラベルが付いたコードを探します。

      // ### Create a div in which to place HTML content and place image inside ###
      

HTML の div 要素を作成し、ライブ配信が機能していない場合に表示する画像を配置します。

HTML の div 要素を配置するためのオブジェクトを作成する

以下のラベルが付いたコードを探します。

        // ### Define options object to be used for modal content ###
      

ModalDialog を作成する際に必要になります。

ModalDialog を作成し、そのコンテンツとして画像を配置する

以下のラベルが付いたコードを探します。

      // ### Create Modal with options object ###
      

これは ModalDialog インスタンスを作成してプレーヤーに追加する標準的なコードです。デフォルトでは表示されません。

ディスパッチされるエラーを監視する

以下のラベルが付いたコードを探します。

      // ### Listen for an error event ###
      

エラーがディスパッチされたら、エラーコードと duration を取得します。

エラータイプを判定する

以下のラベルが付いたコードを探します。

        // ### Check if the error code and duration mean no video has loaded ###
      

ライブストリームが再生されていないかを判定するには、次のようにします。

if (((errNo == "4" && duration == 0) || (errNo == "4" &&
      Number.isNaN(duration)))) {
        // Hide the error display
        myPlayer.errorDisplay.hide();
        // If conditions met show the custom modal
        myModal.open();
      }

errNo == "4" && duration == 0 の条件は Chrome と Firefox で有効です。2 つ目の条件 errNo == "4" && Number.isNaN(duration) は Safari と Android 上のブラウザーで必要です。

カスタム ModalDialog が閉じられた場合にデフォルト エラーを表示する

以下のラベルが付いたコードを探します。

      // ### If custom modal error closed, show the default error ###
      

この動作を実装したい場合のみ行います。modalclose イベントを監視し、そのイベント ハンドラー内でデフォルト エラーを表示します。

アプリケーションのスタイリング

CSS は、プレーヤーのサイズ指定のみです。

プラグイン コード

JavaScript を Brightcove プレーヤーのプラグインに変換する際に必要な変更は最小限です。必須の変更点として、通常の ready() メソッドの使用を、プラグイン定義のコードに置き換える必要があります。

以下は、プレーヤーで動作する JavaScript の一般的な冒頭コードです。

      videojs.getPlayer('myPlayerID').ready(function() {
        var myPlayer = this;
        ...
        });

最初の行を、Brightcove プレーヤー プラグインを開始する標準構文に変更します。

      videojs.registerPlugin('pluginName', function(options) {
        var myPlayer = this;
        ...
        });

前述のとおり、プラグインの JavaScript コードは、このドキュメントに対応する GitHub リポジトリで確認できます:liveCustomError.js

プラグインをプレーヤーで使用する

プラグインの CSS と JavaScript ファイルをインターネットからアクセス可能な場所に保存したら、プレーヤーでプラグインを使用できます。Studio の PLAYERS モジュールでプレーヤーを選択し、プラグイン セクションで CSS と JavaScript ファイルの URL を追加し、必要に応じて 名前オプション を設定します。