BrightcovePlayerでの再生制限
はじめに
デフォルトでは、BrightcovePlayerはBrightcovePlaybackAPIと通信します。再生権限と制限を管理する新しいシステムは、Playback APIの前に配置され、DRMライセンスを使用して再生認証を提供します。
DRMの有無にかかわらず再生権を使用できますが、ランタイム制限を使用する場合は、JSON Web Token(JWT)を使用する必要があります。
ライセンスキー保護は、DRM保護またはHTTPライブストリーミング暗号化(HLSe)コンテンツで動的配信を使用するときに追加レベルのセキュリティを提供します。ライセンス要求は、署名されたものを使用して認証できますJSON Web Token(JWT)。トークンは、ビデオライセンスを要求するときに、ビデオがプレーヤーにロードされ、ソースが選択されたときに使用されます。
ライセンスキー保護用に Brightcove Player を設定するには、動画のカタログリクエストを行うときにトークンパラメータを渡します。
この機能に慣れていない場合は、「概要」を参照してください。ブライトコーブの再生制限に関するドキュメント。
次のセクションのコードを理解しやすくするために、次のドキュメントの概念を確認してください。
必要条件
再生制限を使用するために必要な要件は次のとおりです。
再生権限
再生権限を使用するには、次のものが必要です。
- プレイヤーバージョン6.39.0以上
ライセンスキーの保護
ライセンスキー保護を使用するには、次のものが必要です。
- プレーヤーバージョン 6.33.0 以降
- DRM を使用する場合は、 DRM プラグインバージョン 5.5.0 以降が必要です
再生権限を使用する
再生権限を使用するには、次の手順を実行します。
-
Brightcove Playerのポリシーキーを削除します。詳細については、「再生権限でリクエストする」セクションを参照してください。
-
実行時の制限がある場合は、認証トークンが必要です。指定すると、このトークンは、後続の要求の Authorization ヘッダーとして追加されます。
次のようにプレーヤーに1つ追加できます。
player.catalog.setBcovAuthToken('your jwt token');
- ポリシーキーや認証トークンを変更すると、Brightcove Playback APIにデータをリクエストして、プレーヤーに読み込む準備が整います。このプロセスは、デフォルトの場合と同じです。
これは、再生制限と認証トークンを使用して単一のビデオをフェッチする例です。
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>
再生権限でリクエストする
デフォルトでは、ポリシーキーがある場合、すべての Brightcove Player が Playback API にリクエストを送信します。プレイバック権限を確認するリクエストを最初に実行するには、ポリシーキーを削除する必要があります。これを行うには、次の 2 つの方法があります。
すべてのプレイヤーからポリシーキーを削除する
Video Cloud Studio で作成した新規プレーヤーのポリシーキーの取り込みを回避するには、次の手順を実行します。
- アカウントマネージャーにお問い合わせください。
- アカウント ID を指定し、
remove policy key
フラグを有効にするよう依頼してください。
個々のプレイヤーからポリシーキーを削除する
デフォルトでは、remove policy key
このフラグはアカウントで無効になっています。個々のプレーヤーからポリシーキーを削除するには、次の手順を実行します。
- Video Cloud Studio で、プレーヤーモジュールに移動します。
- ポリシーキーを削除するプレーヤーを選択します。
- 左側のナビゲーションで、[ JSON エディタ] を選択します。
- をセットする
policy_key
フィールドとしてnull
。JSON エディター - 変更を保存し、プレーヤーを公開します。
再生権限なしでリクエストする
このプロセスを元に戻して、権限や制限なしに Playback API にリクエストを直接戻すことができます。
ポリシーキーと認証トークンを次のように設定します。
-
あなたが持っていた場合
remove policy key
フラグを有効にしてから、アカウントマネージャーに連絡して無効にします。 - Studioで個々のプレーヤーを更新した場合は、ポリシーキーを使用してJSONを更新します。
JSON エディター - 認証トークンをに設定します
null
。player.catalog.setBcovAuthToken(null);
ライセンスキー保護の使用
ライセンスキー保護を使用するには、プロパティ名を使用して、bcovAuthToken
プレーヤーカタログオブジェクトの一部として認証トークン文字列を渡します。
このアプローチは、DRM コンテンツと HLSE コンテンツの両方に対して機能します。プレーヤーは、Playback API からロードされているソースの種類を検出し、そのソースの正しい実装を提供します。
ライセンスキー保護を使用するには、次の手順を実行します。
- 署名付き JSON Web トークン (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', bcovAuthToken: 'your jwt token' }) .then(function(videoReturned){ myPlayer.catalog.load(videoReturned); }) .catch(function(err){ console.log('err:', err); }); })(); </script>
同時実行性と登録の使用
ストリーム同時実行またはデバイス登録を使用している場合は、Brightcove Playerは、標準の DRMプラグイン。
次の手順に従ってください。
- Brightcove Playerに EMEプラグインを追加します。プラグインが更新され、インクルードされました
persistentState
。 - Video Cloud Studio で、[ プレーヤー]モジュールに移動します。プレーヤーのリンクを選択すると、その情報が表示されます。
- 左側のナビゲーションで、[ 再生] を選択します。
-
[DRM を有効にする]が選択されていないことを確認します。
DRM オプションを有効にする - 左側のナビゲーションで、[ JSON エディタ] を選択します。
-
JSON コードで、
plugins
配列を検索し、次のようにして EME プラグインを追加します。"plugins": [ { "name": "eme", "scripts": [ "//players.brightcove.net/videojs-drm/5.9.1/videojs-drm.min.js" ], "stylesheets": [ "//players.brightcove.net/videojs-drm/5.9.1/videojs-drm.css" ], "options": { "keySystems": { "com.widevine.alpha": { "persistentState": "required" } } } },
- 「ライセンスキー保護の使用」セクションで定義されているように、JWT 認証トークンを含めます。
サーバーサイド広告 (SSAI) の設定
SSAI でライセンスキー保護を使用している場合は、という名前のカタログパラメータオブジェクトに追加のパラメータを含める必要があります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>
カスタム実装を使用する
を持っていないカスタム実装を使用している可能性がありますbcovAuthToken
で値を設定するにはcatalog.get()メソッドリクエスト。独自のプレーヤーまたはサードパーティプレーヤーを使用している場合は、次のいずれかの方法を使用してトークンをライセンスリクエストに渡すことができます。
-
HTTP ヘッダー:
BCOV-Auth
(Not supported for HLSe) -
クッキー:
bcov-auth
(Not supported for HLSe) -
クエリパラメータ:
bcov-auth
(Only supported for HLSe) Must be appended to the master manifest url, instead of the license 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>