Brightcoveプレーヤー用の DASH DRM マニフェストを作成する
概要
MPEG-DASH マニフェスト (.MPD ファイル) では、共通暗号化 (CENC) を使用して暗号化された MPEG-DASH レンディションを使用したビデオについて説明し、Playready、Widevine、および Marlin コンテンツ復号モジュール (CDM) と互換性があります。ブライトコーブの Web プレーヤーでは、使用しているブラウザに応じて Playready と Widevine のみがサポートされています。
ブラウザのサポート
再生は、サポートされているデスクトップの Macintosh および Windows ブラウザでのみ動作します。
| ブラウザの種類 | 再生技術 | DRMタイプ | 
|---|---|---|
| Chrome 34+ | Shaka-Playerを使用したネイティブMSE/EME再生* | Widevine | 
| Windows 10のMS Edge | Shaka-Playerを使用したネイティブMSE/EME再生* | プレイレディ | 
| サファリ、IE、Firefoxを含む他のすべてのブラウザ | シルバーライトプラグイン | プレイレディ | 
外部DRMコンテンツ
ブライトコーブ Video Cloud の外部で作成された DRM コンテンツの要件
Brightcove Player を使用して DRM 保護が適用された動画コンテンツを再生するには、以下のガイドラインに従って動画がエンコードされている必要があります。
- MPEG-DASH ライブプロファイルでなければなりません (「オンデマンド」ではなく、「hbbtv」ではない)
 - すべてのレンディションは、同じキーフレーム間隔とフレームレートを持つ必要があります (Silverlight プラグインとの互換性のために)
 - 共通暗号化 (CENC) を使用して暗号化し、Playready と Widevine のサポートを有効にする必要があります
 - Playready および Widevine ライセンスサーバーの URL を指定する必要があります。Playready ライセンスサーバーの URL をマニフェストファイル (.mpd) に含める必要があります。Widevine ライセンスサーバーの URL は、マニフェストで指定するか、Javascript のパラメータとして指定できます
 - Playready 初期化ベクトルは 8 バイトである必要があります。
 
マニフェストのサンプル
Video Cloud によって生成された MPEG-DASH マニフェスト(.MPD ファイル)の例を次に示します。
<?xml version="1.0" ?>
<MPD mediaPresentationDuration="PT1M28S" minBufferTime="PT2.00S" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:mspr="urn:microsoft:playready" xmlns:mas="urn:marlin:mas:1-0:services:schemas:mpd">
   <Period>
      <AdaptationSet mimeType="audio/mp4" segmentAlignment="true" startWithSAP="1">
         <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="5d97af80-2442-4fe9-b1aafc24ecb6fa28" xmlns:cenc="urn:mpeg:cenc:2013"/>
         <ContentProtection schemeIdUri="urn:uuid:5E629AF5-38DA-4063-8977-97FFBD9902D4">
            <mas:MarlinContentIds>
               <mas:MarlinContentId>urn:marlin:kid:5d97af8024424fe9b1aafc24ecb6fa28</mas:MarlinContentId>
            </mas:MarlinContentIds>
         </ContentProtection>
         <ContentProtection schemeIdUri="urn:uuid:79f0049a-4098-8642-ab92-e65be0885f95">
            <mspr:pro>jAIAAAEAAQCCAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AZwBLACsAWABYAFUASQBrADYAVQArAHgAcQB2AHcAawA3AEwAYgA2AEsAQQA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBVAGQAawBLAGIASQBBAHgAbgBOAGcAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAHIAbABpAGMALgBiAHIAaQBnAGgAdABjAG8AdgBlAC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC8AMwA3ADIAMwA0ADkANgAyADcANwAwADAAMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</mspr:pro>
         </ContentProtection>
         <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" bc:licenseAcquisitionUrl="https://wvlic.brightcove.com/proxy/4324249227001" xmlns:bc="urn:brightcove:2015"/>
         <SegmentTemplate duration="2000" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/seg-$Number$.m4f" startNumber="0" timescale="1000"/>
         <Representation bandwidth="43241" id="4324360320001/audio/und" codecs="mp4a.40.5" audioSamplingRate="22050">
            <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
         </Representation>
      </AdaptationSet>
      <AdaptationSet mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" scanType="progressive">
         <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="5d97af80-2442-4fe9-b1aafc24ecb6fa28" xmlns:cenc="urn:mpeg:cenc:2013"/>
         <ContentProtection schemeIdUri="urn:uuid:5E629AF5-38DA-4063-8977-97FFBD9902D4">
            <mas:MarlinContentIds>
               <mas:MarlinContentId>urn:marlin:kid:5d97af8024424fe9b1aafc24ecb6fa28</mas:MarlinContentId>
            </mas:MarlinContentIds>
         </ContentProtection>
         <ContentProtection schemeIdUri="urn:uuid:79f0049a-4098-8642-ab92-e65be0885f95">
            <mspr:pro>jAIAAAEAAQCCAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AZwBLACsAWABYAFUASQBrADYAVQArAHgAcQB2AHcAawA3AEwAYgA2AEsAQQA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBVAGQAawBLAGIASQBBAHgAbgBOAGcAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAHIAbABpAGMALgBiAHIAaQBnAGgAdABjAG8AdgBlAC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC8AMwA3ADIAMwA0ADkANgAyADcANwAwADAAMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</mspr:pro>
         </ContentProtection>
         <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" bc:licenseAcquisitionUrl="https://wvlic.brightcove.com/proxy/4324249227001" xmlns:bc="urn:brightcove:2015"/>
         <SegmentTemplate duration="2000" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/seg-$Number$.m4f" startNumber="0" timescale="1000"/>
         <Representation bandwidth="237182" id="4324360320001/video/1" codecs="avc1.42c015" frameRate="30" width="400" height="300"/>
         <Representation bandwidth="601518" id="4324360321001/video/1" codecs="avc1.42c015" frameRate="30" width="400" height="300"/>
         <Representation bandwidth="981387" id="4324360323001/video/1" codecs="avc1.42c016" frameRate="30" width="480" height="360"/>
         <Representation bandwidth="1507704" id="4324360324001/video/1" codecs="avc1.42c01e" frameRate="30" width="640" height="480"/>
         <Representation bandwidth="2102387" id="4324360325001/video/1" codecs="avc1.42c01e" frameRate="30" width="640" height="480"/>
         <Representation bandwidth="2991373" id="4324360326001/video/1" codecs="avc1.42c01e" frameRate="30" width="640" height="480"/>
      </AdaptationSet>
   </Period>
</MPD>
  ライセンス情報
Brightcove Player と互換性のある独自の DASH-DRM ストリームを作成するには、上記のマニフェスト (MPD) と DRM ライセンスに関する情報を含む同様のマニフェスト (MPD) をエンコードシステムで作成する必要があります。MPD では、現在 Brightcove Player で使用されていない Marlin セクションを省略できます。
PlayReady ライセンスキーの指定
Brightcove Playerでは、PlayReady ライセンス情報を Base-64 エンコード文字列として MPD に埋め込む必要があります。<mspr:pro>上記のタグには、この例の値が表示されます。エンコードされたキー情報は、以下でデコードされています。PlayReady ヘッダーの形式に関する情報はこちらをご覧ください:   http://www.microsoft.com/playready/documents/  .
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0"><DATA><PROTECTINFO><KEYLEN>16</KEYLEN><ALGID>AESCTR</ALGID></PROTECTINFO><KID>gK+XXUIk6U+xqvwk7Lb6KA==</KID><CHECKSUM>UdkKbIAxnNg=</CHECKSUM><LA_URL>https://prlic.brightcove.com/license/3723496277001</LA_URL></DATA></WRMHEADER>
    Widevine ライセンスの URL の指定
ここでは、Widevine ライセンスサーバの URL が MPD に次の行で提供されていることに注意してください。
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" bc:licenseAcquisitionUrl="https://wvlic.brightcove.com/proxy/4324249227001" xmlns:bc="urn:brightcove:2015"/>
    または、Widevine ライセンスサーバーの URL を JavaScript でプレーヤーのパラメーターとして埋め込まれているページで指定することもできます。ソースの URL でライセンスサーバを指定して Brightcove Player を呼び出す方法の例を次に示します。
myPlayer.src({
  "src": sourceUrl,
  "type": "application/dash+xml",
  "keySystemOptions": [{
    "name": "com.widevine.alpha",
    "options": {"licenseUrl": licenseServerUrl}
  }]
});
  プリロード
ビデオデータのプリロードを制御するために選択できるいくつかの設定があります。詳細については、プレーヤー設定ガイドの「プリロード」セクションを参照してください。デフォルトの動作では、Brightcove Player が動画メタデータ(タイトルや再生時間など)と数秒の動画データをプリロードします。プリロードの動作を変更する場合は、プレイヤー設定で次のオプションを指定できます。
"preload": "none"
    その設定のプレイヤー構成の例を次に示します。
{
  "account_id": "3723496277001",
  "autoadvance": 0,
  "embed_id": "default",
  "player": {
    "template": {
      "name": "single-video-template",
      "version": "1.14.26"
    }
  },
  "player_id": "82f443bc-82f5-4074-bf9c-de2920c89b24",
  "player_name": "DRM Demo",
  "preload": "none",
  "scripts": [
    "https://players.brightcove.net/videojs-dash/videojs-dash.min.js"
  ],
  "stylesheets": [
    "https://players.brightcove.net/videojs-dash/videojs-dash.css"
  ],
  "video_cloud": {
    "policy_key": "BCpkADawqM2ENcgyE-9inavnwhb7UdI2lOWO-at96gPIdABCVZPuXWJkv6ddgIUTCbe3iyoKKI5hyVkjKkhRve9eOhJ7e5G6433DkB5DS2ilfROKA8hN07KKYt6k6MqCbqvL5N-KGYcYDEFGSP8b5dC",
    "video": null
  }
}