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 を利用するには、次の手順に従います:
-
Brightcove Player のポリシーキーを削除します。詳細は Playback Rights を使用したリクエストの実行 セクションを参照してください。
-
ランタイム制限 を使用する場合、認可トークンが必要です。指定されると、このトークンは以降のリクエストの Authorization ヘッダーとして追加されます。
プレーヤーには次のように追加できます:
player.catalog.setBcovAuthToken('your jwt token'); - ポリシーキーや認可トークンを変更した後、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 で新しく作成されるプレーヤーへのポリシーキーの取り込みを回避するには、次の手順を実行します:
- アカウントマネージャーに連絡します。
- アカウント ID を提示し、
remove policy keyフラグを有効にするよう依頼します。 - 既存のプレーヤーについては、変更を反映させるためプレーヤーを再公開してください。
Video Cloud Studio で Playback Rights を有効化する
- Players モジュールに移動します。
- 構成するプレーヤーを選択します。
- Overview タブの Content Restrictions セクションを展開します。
Enable Playback Rights をチェックします。
- Save をクリックし、続いて Publish Changes をクリックします。
ランタイムでポリシーキーを削除する
プレーヤーのポリシーキーを解除するには、JS スクリプトに次のコード行を追加します:
myPlayer.catalog.setPolicyKey(null);
Playback Rights を使用しないリクエストの実行
このプロセスを逆にすることで、リクエストを権限と制限なしの Playback API に戻すことができます。
すべてのプレーヤーでポリシーキーを再有効化する
以前にアカウントで policy key flag の削除が有効になっていた場合、ポリシーキーを復元するにはこれを無効にする必要があります。
-
Brightcove のアカウントマネージャーに連絡します。
remove policy keyフラグを無効にするよう依頼します。変更を反映させるため、影響を受けるすべてのプレーヤーを再公開します。
個別のプレーヤーでポリシーキーを再有効化する
特定のプレーヤーでポリシーキーを復元する必要がある場合:
-
Video Cloud Studio で Players モジュールに移動します。
更新したいプレーヤーを選択します。
Overview タブの JSON Editor セクションを展開します。
プレーヤーの JSON 設定を更新し、
noneを有効なポリシーキーに置き換えて policy key を含めます。保存し、プレーヤーを再公開します。
ランタイムでポリシーキーを再有効化する
ランタイムで動的にポリシーキーを再有効化するには、JavaScript コードで認可トークンを更新します:
- 認可トークンを
nullに設定します。player.catalog.setBcovAuthToken(null);
License Keys Protection の使用
License Keys Protection を使用するには、プロパティ名 bcovAuthToken を使用して、player catalog オブジェクトの一部として認可トークン文字列を渡します。
このアプローチは DRM および HLSe コンテンツの両方に対して機能します。プレーヤーは Playback API から読み込まれているソースの種類を検出し、そのソースに対して正しい実装を提供します。
License Keys Protection を使用するには、次の手順に従います:
- 署名付き JSON Web Token (JWT) を作成します。
- 動画リクエストにこのトークンを含めます。
このサンプル実装コードは、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 プラグインを使用する必要があります。
次の手順に従います:
- Brightcove Player に EME プラグインを追加します。このプラグインは
persistentStateを含むように更新されています。 - Video Cloud Studio で Players モジュールに移動します。プレーヤーをクリックしてプロパティを表示します。
- Overview タブの Playback セクションを展開します。
- Enable DRM が選択されていないことを確認します。
- Overview タブの JSON Editor セクションを展開します。
-
JSON コードで
playerオブジェクトを見つけ、次のようにeme_optionsオブジェクトを追加します:"player": { "eme_options" : { // add eme options for all sources here. } } - 指定した keySystems の eme オプションとして、
persistentStateを"required"に設定します。"eme_options": { "keySystems": { "com.widevine.alpha": { "persistentState": "required" } } } - 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 ドキュメントを参照してください。