サポートに連絡する| システムステータス
ページコンテンツ

    DRM 用の Brightcove Player

    の設定このトピックでは、Brightcove Player がデジタル著作権管理 (DRM) を実装する方法を学習します。このドキュメントでは、まず DRM プラグインの実装方法について説明し、次にプラグインの詳細と実装方法を示します。

    はじめに

    ブライトコーブは、DRM で保護されたコンテンツを可能な限り幅広いブラウザやデバイスに配信するために、以下のテクノロジーを採用しています。

    • ネイティブ/EMEがサポートするCENC DRMを搭載したMPEG-DASH
    • HLS with FairPlay

    DRM を Brightcove Player で使用するには、次の条件を満たす必要があります。

    • DRM 対応コンテンツを生成
    • DRM プラグインを使用できるように Brightcove Player を有効にする
    • 場合によっては、ライセンスサーバーを使用するようにDRMプラグインを構成します

    用語

    このドキュメントで使用されているこれらの重要な用語を確認してください。

    用語 定義
    DRM ウィキペディアから: デジタル著作権管理 (DRM) は、販売後のデジタルコンテンツおよびデバイスの使用を制御する目的で、ハードウェアおよびソフトウェアの製造元、発行元、著作権者、および個人によって使用されるコピープロテクトテクノロジのクラスです。
    MPEG-DASH ウィキペディアから: MPEG-DASHとも呼ばれるDynamicAdaptive Streaming over HTTP(DASH)は、従来のHTTPWebサーバーから配信されるインターネットを介したメディアコンテンツの高品質ストリーミングを可能にするアダプティブビットレートストリーミング技術です。AppleのHTTPライブストリーミング(HLS)ソリューションと同様に、MPEG-DASHは、コンテンツを一連の小さなHTTPベースのファイルセグメントに分割することで機能します。各セグメントには、コンテンツの再生時間の短い間隔が含まれ、継続時間は数時間になる可能性があります。映画やスポーツイベントの生放送など。
    CENC ISO規格から: 「CENC' Common Encryption Scheme」では、1 つ以上のデジタル権利およびキー管理システム(DRM システム)で異なるDRMシステムを使用して同じファイルの復号化を可能にできる標準の暗号化およびキーマッピング方法を指定します。
    暗号化メディア拡張(EME) ウィキペディアから:EME は、Web ブラウザとデジタル著作権管理 (DRM) エージェントソフトウェア間の通信チャネルを提供するための W3C ドラフト仕様です。これにより、Microsoft Silverlight のようなサードパーティのメディアプラグインを必要とせずに、HTML5 ビデオを使用して DRM ラップされたコンテンツを再生できます。

    プレーヤーモジュールを使用して実装する

    Studio で DRM プラグインを実装し、アカウント設定に基づいて DRM を有効にするには、次の手順を実行します。

    1. を開きますプレイヤーモジュールを作成し、新しいプレーヤーを作成するか、DRM機能を追加するプレーヤーを見つけます。
    2. プレーヤーのリンクをクリックして、プレイヤーのプロパティを開きます。
    3. 左側のナビゲーションメニューで [ 再生 ] をクリックします。
    4. 次に、 DRMを有効にするチェックボックス。
      DRM checkbox in Studio
    5. プレーヤーを公開するには、[ パブリッシュと埋め込み] > [変更の公開] の順にクリックします
    6. 開くダイアログを閉じるには、[ 閉じる] をクリックします

    DRMプラグインのアーキテクチャ

    DRMプラグイン( videojs-drm )は、2つのプラグインのラッパーです。

    • videojs-シルバーライト
    • videojs-contrib-eme

    videojs-drmプラグインバージョン5は、プレーヤーの内蔵DASH再生機能を使用しています。これは、組み込みのvideojs-contrib-hlsプラグインの次のバージョンであり、名前が変更されたバージョンであるVHSを利用しています。

    プレイヤー6.26.0の時点で、プレイヤーはダッシュマルチピリオドをサポートしています。以前のバージョンのプレーヤーでは、ダッシュマルチピリオドにはシャカプレーヤーが必要です。

    バージョン 4 と同様に、Shaka Player を DASH 再生に使用する場合は、 videojs-drm バージョン 5 スクリプトとともに次のスクリプトを含めることができます。

        https://players.brightcove.net/videojs-shaka/1/videojs-shaka.js
     

    videojs-silverlightプラグインは、特定のInternet Explorerのブラウザでダッシュコンテンツを再生することができます。

    ザ・videojs-contrib-emeプラグインは、FairPlayHLSコンテンツの再生を可能にします。

    使用される再生テクノロジー

    Brightcove Player は、ブラウザーごとに異なる DRM 再生テクノロジーを利用しています。Brightcove Playerで使用される DRM テクノロジーについて詳しく説明します。

    • フェアプレイ :アップルのDRMシステム
    • PlayReady :マイクロソフトのDRMシステム
    • Widevine :グーグルのDRMシステム

    次の表に、Brightcove Player で使用されるブラウザ(最新バージョン)、フォーマット、再生テクノロジの関係について詳しく説明します。

    ブラウザ [形式] 再生技術 使用されるレンディションタイプ
    DRM コンテンツを配信するには
    Chrome デスクトップ DASH with Widevine ネイティブ/EME MPEG-DASH
    Chrome モバイル1 DASH with Widevine ネイティブ/EME MPEG-DASH
    Internet Explorer2 PlayReadyでダッシュ シルバーライト MPEG-ダッシュ
    エッジ PlayReadyでDASH ネイティブ/EME MPEG-ダッシュ
    サファリ HLS with FairPlay ネイティブ HLS HLS
    Firefoxの Dash with Widevine ネイティブ/EME MPEG-DASH

    1iOSでChrome Mobileを使用したDRM再生はサポートされていません。

    2Windows 10と8.1ではIE11、Win8 MetroではIE11ではネイティブ/EMEを使用する。他のすべてのIEバージョンと構成は、Silverlightプラグインを使用します。

    DRMコンテンツを作成する

    DRM 対応コンテンツを作成するには、次の 2 つの手順を実行する必要があります。

    1. アカウントを DRM 対応にする場合は、アカウントマネージャーにお問い合わせください。その後、適切なライセンスキーと取り込みプロファイルを使用してアカウントを構成し、DRM で保護されたコンテンツの作成を有効にできます。
    2. DRM で保護されたコンテンツを生成します。新しいコンテンツをアップロードするか、既存のコンテンツを DRM として再エンコードするかを選択できます。これは、を選択することによって行われます取り込みプロファイルそれはあなたの望む暗号化技術を生み出します。

    セグメント化および暗号化されたビデオを含むMPEG-DASHマニフェスト、またはHLSFairPlayコンテンツのいずれかを使用するDRM保護コンテンツを作成する必要があります。

    コードでのFairPlay再生の実装

    ページ内埋め込みコードを使用して FairPlay 再生を実装する場合は、以下の手順に従って DRM プラグインを使用する必要があります。

    1. HTML ページのヘッダーに、プラグインのスタイルシートを含めます。
          <link href="https://players.brightcove.net/videojs-drm/5/videojs-drm.css" rel="stylesheet">
          
          
    2. プラグインの JavaScript を含めます。
          <script src="https://players.brightcove.net/videojs-drm/5/videojs-drm.min.js"></script>   
    3. アカウントが動的配信用に設定されている場合は、EMEプラグインを呼び出して初期化してください。

          <script type="text/javascript">
            videojs.getPlayer('myPlayerID').ready(function() {
              var myPlayer = this;
              myPlayer.eme();
          });
          </script>

       

      アカウントが動的配信用に設定されていない場合は、FairPlay 認証情報を使用して EME プラグインを呼び出して設定する必要があります。

          videojs.getPlayer('myPlayerID').ready(function() {
            var myPlayer = this;
            myPlayer.eme({
              "applicationId": "YOUR_APPLICATION_ID",
              "publisherId": "YOUR_PUBISHER_ID"
            });
          });
          </script>

      Brightcove Player は、FairPlay 認証情報情報を Video Cloud FairPlay 証明書パスに送信します。

    FairPlay で保護されたコンテンツで DRM プラグインを使用するには、次の手順に従います。

    1. HTML ページのヘッダーに、プラグインのスタイルシートを含めます。
          <link href="https://players.brightcove.net/videojs-drm/5/videojs-drm.css" rel="stylesheet">
    2. プラグインのJavaScriptを含める:
          <script src="https://players.brightcove.net/videojs-drm/5/videojs-drm.min.js"></script>
    3. ページのJavaScriptブロックで、FairPlayクレデンシャル情報を使用してEMEプラグインを呼び出し、構成します。 getCertificate getContentIdそしてgetLicense EMEプラグインに機能します。これらの関数は、独自の FairPlay ライセンスサーバー実装に固有のものであり、 src を設定する前に EME プラグインに直接渡すことができます。
          <script type="text/javascript">
            videojs.getPlayer('myPlayerID').ready(function() {
              var myPlayer = this;
              myPlayer.eme({
                keySystems: {
                  'com.apple.fps.1_0': {
                  getCertificate: function (emeOptions, callback) {
                  // request certificate
                  // if err, callback(err)
                  // if success, callback(null, certificate) where certificate
                  // is a Uint8Array
                },
                getContentId: function (emeOptions, initData) {
                  // return content ID as a string
                  },
                  getLicense: function (emeOptions, contentId, keyMessage, callback) {
                    // request key
                    // if err, callback(err)
                    // if success, callback(null, key) as an arraybuffer
                  }
                }
              }
            });
          </script>

    FairPlay 情報は、各 src オブジェクトの一部として渡すこともできます。 emeOptions は、すべての関数のパラメータとして提供されます。これらは、現在のソースのソースオプションとマージされた(上書きされた)プラグインオプションへの参照です。それはあなたがそれらを自分で維持する必要がないように、オプションにアクセスしやすくするために利用可能です。

        player.src({
          type: 'application/vnd.apple.mpegurl',
          src: 'http://www.example.com/path/to/master.m3u8',
          keySystems: {
            "com.apple.fps.1_0": {
              getCertificate: function(emeOptions, callback) { ... },
              getContentId: function(emeOptions, initData) { ... },
              getLicense: function(emeOptions, contentId, keyMessage, callback) { ... }
            }
          }
        });

    たとえば、を使用する必要がある場合アプリケーションIDそしてPublisherIdのためにgetCertificateリクエストの場合、次の方法でプラグインオプションを渡すことができます。

        {
          keySystems: {
            "com.apple.fps.1_0": {
              getCertificate: function(emeOptions, callback) {
              var applicationId = emeOptions.applicationId; // 'application-id'
              var publisherId = emeOptions.publisherId; // 'publisher-id'
              // ...
            }
              // ...
            }
          },
          applicationId: 'application-id'
          publisherId: 'publisher-id'
        }

    または、ソース固有の publisherID が必要な場合は、ソースオプションで上書きできます。

        // plugin options
        {
          keySystems: {
            "com.apple.fps.1_0": {
            getCertificate: function(emeOptions, callback) {
            var applicationId = emeOptions.applicationId; // 'application-id'
            var publisherId = emeOptions.publisherId; // 'source-specific-publisher-id'
            // ...
          },
            // ...
          }
        },
        applicationId: 'application-id'
        publisherId: 'publisher-id'
        }
        // source options
        player.src({
          src: '<URL>',
          type: 'application/vnd.apple.mpegurl',
          publisherId: 'source-specific-publisher-id'
        });

    次に、実装の例を示します。オプションを src オプションとして渡し、ホスト名、固定ライセンスおよび証明書 URI からコンテンツ ID を取得し、キーメッセージの本文を持つ POST を必要とするライセンス URI を取得します。

        var uint8ArrayToString = function(array) {
        return String.fromCharCode.apply(null, new Uint16Array(array.buffer));
        };
        var getHostnameFromUri = function(uri) {
          var link = document.createElement('a');
          link.href = uri;
          return link.hostname;
        };
        var getCertificate = function(emeOptions, callback) {
          videojs.xhr({
            uri: emeOptions.certificateUri,
            responseType: 'arraybuffer'
            }, function(err, response, responseBody) {
            if (err) {
              callback(err);
              return;
            }
            callback(null, new Uint8Array(responseBody));
          });
        };
        var getContentId = function(emeOptions, initData) {
          return getHostnameFromUri(uint8ArrayToString(initData));
        };
        var getLicense = function(emeOptions, contentId, keyMessage, callback) {
          videojs.xhr({
            uri: emeOptions.licenseUri,
            method: 'POST',
            responseType: 'arraybuffer',
            body: keyMessage,
            headers: {
              'Content-type': 'application/octet-stream'
            }
            }, function(err, response, responseBody) {
            if (err) {
              callback(err);
              return;
            }
            callback(null, responseBody);
          });
        };
        player.src({
          type: 'application/vnd.apple.mpegurl',
          src: 'http://www.example.com/path/to/master.m3u8',
          keySystems: {
            "com.apple.fps.1_0": {
            getCertificate: getCertificate,
            getContentId: getContentId,
            getLicense: getLicense
          }
          },
          certificateUri: 'http://example.com/fairplay/certificate/endpoint',
          licenseUri: 'http://example.com/fairplay/license/endpoint'
        });

    コードでのWidevine再生の実装

    ページ内埋め込みコードを使用して Widevine 再生を実装する場合は、以下の手順に従って DRM プラグインを使用する必要があります。

    1. HTML ページのヘッダーに、プラグインのスタイルシートを含めます。
          <link href="https://players.brightcove.net/videojs-drm/5/videojs-drm.css" rel="stylesheet">
    2. プラグインのJavaScriptを含める:
          <script src="https://players.brightcove.net/videojs-drm/5/videojs-drm.min.js"></script>   
    3. 次に、EME プラグインを呼び出して初期化します。
          <script type="text/javascript">
            videojs.getPlayer('myPlayerID').ready(function() {
              var myPlayer = this;
              myPlayer.eme();
            });
          </script>

    Widevine モジュラーコンテンツの場合、プレーヤーのソースハンドラーを使用して Widevine ライセンスサーバーを使用するようにプレーヤーを設定する必要があります。

    ウェブページ上のプレーヤーのインスタンスを更新するには、プレーヤーのソースハンドラーを使用します。keySystemsOptions player.src() 関数で配列を使用する例を次に示します。

        player.src({
          src: 'http://example.com/my/manifest.mpd',
          type: 'application/dash+xml',
          keySystemOptions: [
          {
            name: 'com.widevine.alpha',
            options: {
            licenseUrl: 'http://m.widevine.com/proxy'
          }
          }]
        });

    updateSourceData 次のように関数を使用することもできます。

        videojs.Html5DashJS.updateSourceData = function(source) {
        source.keySystemOptions = [{
        name: 'com.widevine.alpha',
        options: {
        serverURL:'https://example.com/anotherlicense'
        }
        }];
        return source;
        };

    詳細については、GitHub の videojs-contrib-dash 情報を参照してください。

    他の DRM プロバイダのサポート

    プラグインは、顧客が他の DRM プロバイダのサポートを実装できるようにするパスを実装しました。Fairplay はライセンス情報を取得するために必要なカスタムロジックを必要とするため、これは主に Fairplay にとって便利です。vendor.name keySystems 特定のソースでに追加すると、このロジックの利用が試行され、必要な証明書とライセンス情報が含まれます。Azure の例を次に示します。

        player.ready(function(){
          player.eme();
          player.src({
          src: 'http://example.com/src-url.m3u8'
          type: '',
          keySystems: {
            'com.apple.fps.1_0': {
            vendor: {
            name: 'azure'
          },
          certificateUri: 'https://example.com/your-certificate-uri.cer',
          licenseUri: 'https://example.com/your-license-uri'
          }
          }
          });
        });

    CastLabs の例を次に示します。

        var player = videojs.getPlayer('myPlayerID');
        player.ready(function(){
          player.eme();
          player.src({
            src: 'http://example.com/src-url.m3u8'
            type: '',
            keySystems: {
              'com.apple.fps.1_0': {
              vendor: {
              name: 'castlabs',
              options: {
              authToken: 'your-auth-token',
              customData: 'your-custom-data'
            }
            }
            certificateUri: 'https://example.com/your-certificate-uri.cer',
            licenseUri: 'https://example.com/your-license-uri'
            }
            }
          });
        });

    この例では、Widevine ソースと PlayReady ソースをロードします。

        player.src({
          type: 'application/dash+xml',
          src: '<some src>',
             keySystems: {
          'com.widevine.alpha': '<license url>',
          'com.microsoft.playready': '<license url>'
          }
        });

    デバッグを有効にする

    DRM DASHコンテンツのデバッグを有効にするには、次のshakaスクリプトをBrightcoveプレーヤーに追加します。

        <!-- Script for the drm plugin -->
        <script src="https://players.brightcove.net/videojs-drm/5/videojs-drm.min.js"></script>
        <!-- Script for the shaka plugin -->
        <script src="https://players.brightcove.net/videojs-shaka/1/videojs-shaka.js"></script>
        <!-- Script for shaka debug plugin  -->
        <script src="https://players.brightcove.net/videojs-shaka/1/videojs-shaka.debug.js"></script>

    以下は、プレーヤーのロード時のデバッグの例です。

    Debugging in console at startup

    以下は、ビデオの再生開始後のデバッグの例です。

    Debugging in console after playing

    DASH-IF

    Brightcove Playerは、DASH業界フォーラム(DASH-IF)アセットをサポートし、ブライトコーブのデータをネイティブ/EME に渡します。見るhttp://dashif.org DASH-IFの詳細については。DASH を使用するときは、次の DASH-IF リンクも役立ちます。

    既知の問題

    • ザ・デフォルト(自動表示)のキャプション設定 メディアモジュールのテキストトラックセクションは、DRMおよびマニフェスト内のキャプションと組み合わせて使用する場合はサポートされません。マニフェスト内キャプションは、ブライトコーブ製品のダイナミックデリバリーや SSAIなどで使用されます。この問題の回避策は、高度な Brightcove Player <track>実装でタグを使用することです。詳細については、「プログラムによるビデオへのキャプションの追加」を参照してください。default<track>タグとともに属性を使用する必要があることに注意してください。
    • DRM アセットとクロム :DRM プラグインで標準 (iframe) プレーヤー実装を使用する場合、allow="encrypted-media" は Chrome で DRM アセットを再生できるようにする必要があります。
          <iframe src="https://players.brightcove.net/123456789/BydO6uuuu_default/index.html?videoId=5783262319001"
          allowfullscreen
          webkitallowfullscreen
          mozallowfullscreen
          width="640" height="360"
          allow="encrypted-media"></iframe>
    • シルバーライト/IE11のための特別なイベント :ほとんどの場合、プログラムでプレーヤーと対話したい場合は、ready loadedmetadata  イベントまたはイベントを待つディスパッチされます。ただし、IE11 で Silverlight 技術を使用し、DRM コンテンツを再生するときに、プログラムでプレーヤーと対話したい場合は、canplay イベントを待つ必要があります。
    • iOSでは、必要なDRMブラウザAPI (EME) を提供するのはサファリのみで、WebViews は現在 EME をサポートしていません。したがって、フェアプレイ DRM は Safari でのみ動作します。

    更新履歴

    DRM プラグインのリリースノートを参照してください

    過去のリリースノートについては、ここの changelog を参照してください


    ページの最終更新日30 Sep 2021