サポート サポート問い合わせ先 | システムステータス システムステータス
ページ内容

    Brightcove Playerの DRM 設定

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

    Brightcove DRMで保護されたコンテンツを幅広い種類のブラウザやデバイスに配信するために、次のテクノロジーを採用しています。

    • ネイティブ/ EME対応CENC DRMを使用したMPEG-DASH
    • FairPlayのHLS

    DRMを Brightcove Player 絶対です:

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

    用語

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

    契約期間 定義
    DRM ウィキペディアから: デジタル権利管理(DRM)は、ハードウェアおよびソフトウェアの製造元、出版社、著作権者、および販売後のデジタルコンテンツおよびデバイスの使用を制御する意図を持つ個人によって使用されるコピー保護技術の一種です。
    MPEG-DASH ウィキペディアから: MPEG-DASHとも呼ばれるHTTP(DASH)を介した動的アダプティブストリーミングは、従来のHTTP Webサーバーから配信されるインターネット上のメディアコンテンツの高品質なストリーミングを可能にする適応型ビットレートストリーミング技術です。 AppleのHTTPに似ています Live ストリーミング(HLS)ソリューションであるMPEG-DASHは、コンテンツを小さなHTTPベースのファイルセグメントのシーケンスに分割することによって動作します。各セグメントには、ムービーなどの潜在的に長時間のコンテンツの再生時間の短い間隔が含まれます。スポーツイベントの生中継。
    CENC ISO規格から: 「CENC」共通暗号化スキームは、異なるDRMシステムを使用して同じファイルの復号化を可能にするために、1つまたは複数のデジタル権利およびキー管理システム(DRMシステム)によって利用できる標準的な暗号化およびキーマッピング方法を指定する。
    暗号化されたメディア拡張(EME) Wikipediaより:EMEはウェブブラウザとデジタル著作権管理(DRM)エージェントソフトウェアとの間の通信チャネルを提供するためのW3Cドラフト仕様です。 これにより、Microsoft Silverlightなどのサードパーティのメディアプラグインを必要とせずに、HTML5ビデオを使用してDRMでラップされたコンテンツを再生することができます。

    使用して実装 Playersモジュール

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

    1. Video Cloud Studioで PLAYERS モジュールと新しいのいずれかを作成します player または見つけます player DRM機能を追加する対象。
    2. リンクをクリックすると player を開く playerのプロパティ。
    3. ナビゲーションヘッダーの Playback 左側のナビゲーションメニュー。
    4. 次に、 DRMを有効にする チェックボックスをオンにします。
      DRMチェックボックス Studio
    5. 公開するには player、クリック 公開と埋め込み>変更の公開.
    6. 開いているダイアログを閉じるには、 閉じる.

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

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

    • videojs-silverlight
    • videojs-contrib-eme

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

    のように player 6.26.0 player DASHマルチ期間をサポートします。 以前のバージョンの player、シャカ player DASHマルチ期間には必須です。

    シャカを使いたいなら Player バージョン4の場合と同様に、DASH再生の場合は、次のスクリプトを含めることができます。 videojs-drm バージョン5スクリプト:

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

    videojs-silverlight プラグインを使用すると、特定のInternet ExplorerブラウザでDASHコンテンツを再生できます。

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

    使用された再生技術

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

    • フェアプレー:AppleのDRMシステム
    • PlayReady:マイクロソフトのDRMシステム
    • ワイドヴァイン:GoogleのDRMシステム

    次の表は、ブラウザで使用されるブラウザ(最新バージョン)、フォーマット、および再生テクノロジの関係を示しています。 Brightcove Player:

    ブラウザ フォーマット 再生技術 レンディションタイプ中古
    DRMコンテンツを配信する
    Chromeデスクトップ Dash with Widevine ネイティブ/ EME MPEG-DASH
    クロームモバイル1 Dash with Widevine ネイティブ/ EME MPEG-DASH
    インターネットエクスプローラ2 PlayReadyでDASH Silverlightの MPEG-DASH
    エッジ PlayReadyでDASH ネイティブ/ EME MPEG-DASH
    サファリ FairPlayのHLS ネイティブHLS HLS
    Firefoxの Dash with Widevine ネイティブ/ EME MPEG-DASH

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

    2Windows 11および10のIE8.1、Win11 MetroのIE8はネイティブ/ EMEを使用します。 他のすべてのIEのバージョンと設定では、Silverlightプラグインが使用されます。

    DRMコンテンツを作成する

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

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

    セグメント化され暗号化されたビデオを含むMPEG-DASHマニフェスト、またはHLS FairPlayコンテンツを使用する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. アカウントが設定されている場合 Dynamic DeliveryEMEプラグインを呼び出して初期化してください。

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

      あなたのアカウントがセットアップされていない場合 Dynamic Delivery、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, getContentIdgetLicense 機能をEMEプラグインに追加します。 これらの機能は、独自のFairPlayライセンスサーバーの実装に固有のもので、EMEプラグインに直接渡されてから SRC 設定されている:
          <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出版社ID のために 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'
        }

    または、ソース固有のものが必要な場合 出版社ID ソースオプションで上書きすることができます:

        // 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 Modularコンテンツの場合は、 player を使用してWidevineライセンスサーバーを使用するには playerのソースハンドラ。

    のインスタンスを更新するには player ウェブページでは、 playerのソースハンドラ。 これは使用例です 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;
        };

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

    他の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 Player:

        <!-- 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>

    以下は、デバッグの例です。 player 負荷:

    起動時のコンソールでのデバッグ

    ビデオが再生された後のデバッグの例を次に示します。

    再生後のコンソールでのデバッグ

    DASH-IF

    Brightcove Player DASH Industry Forum(DASH-IF)資産をサポートし、 Brightcove データをネイティブ/ EMEに転送します。 見る http://dashif.org DASH-IFの詳細については。 DASHを使用するときは、次のDASH-IFリンクも役立ちます。

    既知の問題点

    • デフォルト(自動表示) のキャプション設定 メディア モジュールの テキストトラック このセクションは、DRMおよびマニフェスト内キャプションと一緒に使用した場合はサポートされません。 マニフェストキャプションは Brightcove たとえば、Dynamic DeliveryやSSAIなどがあります。 この問題を回避するには、 <track> 高度のタグ付け Brightcove Player 実装。 これは ビデオにキャプションをプログラムで追加する 資料。 あなたが使用する必要があることに注意してください default 属性は <track> タグ。
    • DRM資産とChrome:標準(iframe)を使用する場合 player DRMプラグインによる実装、 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>
    • Silverlight / IE11特別イベント:ほとんどの場合、プログラムで player あなたはどちらかを待つでしょう ready or loadedmetadata ディスパッチされるイベント。 ただし、プログラムで player IE11でSilverlight技術を使用し、DRMコンテンツを再生する場合は、 canplay イベント。
    • iOSでは、Safariのみが必要なDRMブラウザAPI(EME)を提供し、WebViewは現在EMEをサポートしていません。 したがって、Fairplay DRMはSafariでのみ動作します。

    変更履歴

    見ます 変更履歴はこちら.


    ページの最終更新日:29年2020月XNUMX日