Brightcove Player による再生制限

このトピックでは、Brightcove Player を構成して再生制限を使用する方法について学びます。

はじめに

Brightcove Player は Brightcove Playback API と連携し、再生権限と制限を管理します。Content Restrictions 設定にある新しい Enable Playback Rights チェックボックスにより、再生認可が自動化され、このプロセスが簡素化されます。

Playback Rights は DRM の有無にかかわらず使用できますが、ランタイム制限を使用する場合は JSON Web Token (JWT) が必要になります。

License Keys Protection は、Dynamic Delivery で DRM 保護コンテンツや HTTP Live Streaming Encryption (HLSe) コンテンツを使用する際に、追加のセキュリティレベルを提供します。ライセンスリクエストは、署名付き JSON Web Token (JWT) を使用して認証できます。このトークンは、動画がプレーヤーに読み込まれ、ソースが選択された後、動画ライセンスをリクエストする際に使用されます。

License Keys Protection 用に Brightcove Player を構成するには、動画のカタログリクエストを行う際にトークンパラメーターを渡します。

この機能に慣れていない場合は、概要: Brightcove Playback Restrictions ドキュメントを参照してください。

次のセクションのコードを理解しやすくするために、以下のドキュメントの概念を確認してください:

要件

再生制限を使用するために必要な要件は次のとおりです。

Playback Rights

Playback Rights を使用するには、次が必要です:

  • Player バージョン 6.39.0 以上

License Keys Protection

License Keys Protection を使用するには、次が必要です:

  • Player バージョン 6.33.0 以降
  • DRM を使用する場合は、DRM プラグイン バージョン 5.5.0 以降が必要です

Playback Rights の使用

Playback Rights を利用するには、次の手順に従います:

  1. Brightcove Player のポリシーキーを削除します。詳細は Playback Rights を使用したリクエストの実行 セクションを参照してください。

  2. ランタイム制限 を使用する場合、認可トークンが必要です。指定されると、このトークンは以降のリクエストの Authorization ヘッダーとして追加されます。

    プレーヤーには次のように追加できます:

    player.catalog.setBcovAuthToken('your jwt token');
  3. ポリシーキーや認可トークンを変更した後、Brightcove Playback API からデータをリクエストし、プレーヤーに読み込む準備ができました。このプロセスはデフォルトの場合と同じです。

    以下は、再生制限と認可トークンを使用して 1 本の動画を取得する例です:

    HTML

    <div style="max-width: 960px;">
      <video-js id="myPlayerID"
        data-embed="default"
        controls=""
        data-application-id=""
        class="vjs-fluid"></video-js>
    </div>
    <script src="https://players.brightcove.net/your account id/your player id_default/index.min.js"></script>
    

    JavaScript

    <script>
        // +++ Add the player attributes +++
        var myPlayer,
        	myPlayerEl = document.getElementById("myPlayerID");
        myPlayerEl.setAttribute('data-account', your account id);
        myPlayerEl.setAttribute('data-player', 'your player id');
    
        // +++ Create the player +++
        myPlayer = bc(myPlayerEl);
    
        // Unset the player policy key
        myPlayer.catalog.setPolicyKey(null);
    
        // Set the authorization token
        myPlayer.catalog.setBcovAuthToken('your jwt token');
        // This should trigger a request to:
        //
        //   https://edge-auth.api.brightcove.com/playback/v1/videos/1
        //
        // With header:
        //
        //   Authorization: Bearer <span class="bcls-input">your jwt token</span>
        //
    
        myPlayer.catalog.get({id: 'your video id', type: 'video'}).
        then(function(data) {
          myPlayer.catalog.load(data);
          myPlayer.muted(true);
          myPlayer.play();
        }).
        catch(function(error) {
          throw new Error(error);
        });
    </script>

Playback Rights を使用したリクエストの実行

デフォルトでは、Brightcove Players はポリシーキーを使用して Playback API からコンテンツをリクエストします。Playback Rights を有効にするには、プレーヤーがポリシーキーを保持していてはいけません。Content Restrictions ページの Enable Playback Rights チェックボックスは、ポリシーキーを none に設定し、コンテンツ制限設定を無効化することでこれを自動化します。

すべてのプレーヤーからポリシーキーを削除する

Video Cloud Studio で新しく作成されるプレーヤーへのポリシーキーの取り込みを回避するには、次の手順を実行します:

  1. アカウントマネージャーに連絡します。
  2. アカウント ID を提示し、remove policy key フラグを有効にするよう依頼します。
  3. 既存のプレーヤーについては、変更を反映させるためプレーヤーを再公開してください。

Video Cloud Studio で Playback Rights を有効化する

  1. Players モジュールに移動します。
  2. 構成するプレーヤーを選択します。
  3. Overview タブの Content Restrictions セクションを展開します。
  4. Enable Playback Rights をチェックします。

  5. Save をクリックし、続いて Publish Changes をクリックします。

ランタイムでポリシーキーを削除する

プレーヤーのポリシーキーを解除するには、JS スクリプトに次のコード行を追加します:

myPlayer.catalog.setPolicyKey(null);

Playback Rights を使用しないリクエストの実行

このプロセスを逆にすることで、リクエストを権限と制限なしの Playback API に戻すことができます。

すべてのプレーヤーでポリシーキーを再有効化する

以前にアカウントで policy key flag の削除が有効になっていた場合、ポリシーキーを復元するにはこれを無効にする必要があります。

  1. Brightcove のアカウントマネージャーに連絡します。

  2. remove policy key フラグを無効にするよう依頼します。

  3. 変更を反映させるため、影響を受けるすべてのプレーヤーを再公開します。

個別のプレーヤーでポリシーキーを再有効化する

特定のプレーヤーでポリシーキーを復元する必要がある場合:

  1. Video Cloud StudioPlayers モジュールに移動します。

  2. 更新したいプレーヤーを選択します。

  3. Overview タブの JSON Editor セクションを展開します。

  4. プレーヤーの JSON 設定を更新し、none を有効なポリシーキーに置き換えて policy key を含めます。

  5. 保存し、プレーヤーを再公開します。

ランタイムでポリシーキーを再有効化する

ランタイムで動的にポリシーキーを再有効化するには、JavaScript コードで認可トークンを更新します:

  1. 認可トークンを null に設定します。
    player.catalog.setBcovAuthToken(null);

License Keys Protection の使用

License Keys Protection を使用するには、プロパティ名 bcovAuthToken を使用して、player catalog オブジェクトの一部として認可トークン文字列を渡します。

このアプローチは DRM および HLSe コンテンツの両方に対して機能します。プレーヤーは Playback API から読み込まれているソースの種類を検出し、そのソースに対して正しい実装を提供します。

License Keys Protection を使用するには、次の手順に従います:

  1. 署名付き JSON Web Token (JWT) を作成します。
  2. 動画リクエストにこのトークンを含めます。

    このサンプル実装コードは、catalog.get() メソッドを使用して、トークンを提供しながら動画をリクエストします。

      <video-js id="myPlayerID"
        data-account="1507807800001"
        data-player="default"
        data-embed="default"
        controls
        data-application-id></video-js>
      <script src="//players.brightcove.net/1507807800001/default_default/index.min.js"></script>
    
      <script>
        (function() {
          var myPlayer = videojs.getPlayer('myPlayerID');
    
          myPlayer.catalog.get({
            type: 'video',
            id: '6015247091001',
            policyKey:'none',
            bcovAuthToken: 'your jwt token'
          })
            .then(function(videoReturned){
              myPlayer.catalog.load(videoReturned);
            })
            .catch(function(err){
              console.log('err:', err);
            });
        })();
      </script>

同時実行とデバイス登録の使用

Stream Concurrency または デバイス登録 を使用している場合、Brightcove Player は標準の DRM プラグインの代わりに EME プラグインを使用する必要があります。

次の手順に従います:

  1. Brightcove Player に EME プラグインを追加します。このプラグインは persistentState を含むように更新されています。
  2. Video Cloud Studio で Players モジュールに移動します。プレーヤーをクリックしてプロパティを表示します。
  3. Overview タブの Playback セクションを展開します。
  4. Enable DRM が選択されていないことを確認します。
  5. Overview タブの JSON Editor セクションを展開します。
  6. JSON コードで player オブジェクトを見つけ、次のように eme_options オブジェクトを追加します:

    
      "player": {
        "eme_options" : {
          // add eme options for all sources here.
        }
      }
    
  7. 指定した keySystems の eme オプションとして、persistentState"required" に設定します。
    
      "eme_options": {
        "keySystems": {
          "com.widevine.alpha": {
            "persistentState": "required"
          }
        }
      }
    
  8. License Keys Protection の使用 セクションで定義されているように、JWT 認証トークンを含めます。

サーバーサイド広告(SSAI)の構成

SSAI とともに License Keys Protection を使用する場合は、catalog parameters オブジェクトに adConfigId という追加パラメーターを含める必要があります。

<video-js id="myPlayerID"
  data-account="1507807800001"
  data-player="default"
  data-embed="default"
  controls
  data-application-id></video-js>
<script src="//players.brightcove.net/1507807800001/default_default/index.min.js"></script>

<script>
  (function() {
    var myPlayer = videojs.getPlayer('myPlayerID');

    myPlayer.catalog.get({
      type: 'video',
      id: '6015247091001',
      bcovAuthToken: 'your jwt token',
      adConfigId: 'your ad configuration id'
    })
      .then(function(videoReturned){
        myPlayer.catalog.load(videoReturned);
      })
      .catch(function(err){
        console.log('err:', err);
      });
  })();
</script>

カスタム実装の使用

カスタム実装を使用していて、catalog.get() メソッドリクエストで値を設定するための bcovAuthToken がない場合があります。独自のプレーヤーまたはサードパーティのプレーヤーを使用している場合は、次のいずれかのアプローチを使用してライセンスリクエストにトークンを渡すことができます:

  • HTTP ヘッダー: BCOV-Auth(HLSe ではサポートされません)
  • Cookie: bcov-auth(HLSe ではサポートされません)
  • クエリパラメーター: bcov-auth(HLSe のみサポート)。ライセンス URL ではなく、マスターマニフェスト URL に追加する必要があります

以下は、動画オブジェクトの source.emeHeaders['BCOV-Auth'] 属性をトークンに設定する方法を示す例です。これは、カタログリクエストの後に各ソースに emeHeader を挿入します。

<video-js id="myPlayerID"
  data-account="1507807800001"
  data-player="default"
  data-embed="default"
  controls
  data-application-id></video-js>
<script src="//players.brightcove.net/1507807800001/default_default/index.min.js"></script>

<script>
  (function() {
    var myPlayer = videojs.getPlayer('myPlayerID');

    myPlayer.catalog.get({
      type: 'video',
      id: '6015247091001'
    })
    .then(function(video){
      sources=video.sources;

      for (let i = 0; i < sources.length; i++) {
        const source = sources[i];

        // Only add the auth token as an eme header for DRM content
        if (your jwt token && source.key_systems) {
          source.emeHeaders = {
              'BCOV-Auth': your jwt token
            };
        }
      }
        myPlayer.catalog.load(video);
      })
      .catch(function(err){
        console.log('err:', err);
      });
  })();
</script>

プレーヤーローダーの使用

Brightcove Player でローダーを使用している場合でも、Playback Restrictions を引き続き使用できます。

React Player Loader

React Player Loader を Playback Restrictions とともに使用するには、React Player Loader ドキュメントを参照してください。