簡介
當使用具有受 DRM 保護或 HTTP 即時串流加密 (HLSE) 內容的動態傳遞時,Brightcove 的播放授權服務 (PAS) 提供額外的安全性。使用 PAS,許可證請求將使用簽名的 JSON Web 令牌(JWT)進行身份驗證。一旦將視頻加載到播放器並選擇了源,則在請求視頻許可證時將使用令牌。
本文檔重點介紹將PAS與Brightcove Player一起使用。有關一般的PAS的更多信息,請參見概述:帶有播放授權服務文件的 DRM 。
概覽
要配置Brightcove Player使用PAS,請在對視頻進行目錄請求時傳遞令牌參數。該代碼將在下一部分中顯示。為確保您具有理解代碼的先決條件,以下文檔中的概念將有助於提供構建基礎:
在目錄參數中使用令牌
本節詳細介紹了配置播放器以使用PAS所需的代碼。為此,請將字符串令牌作為目錄參數對象,使用屬性名稱bcovAuthToken
。
這種方法將適用於DRM和HLSe。播放器將檢測從Playback API加載的源的類型,並為該源提供正確的實現。
此示例實現代碼使用catalog.get()提供令牌時請求視頻的方法(這需要替換<BCOV_AUTH_TOKEN>
佔位符)。請確保不要在<video-js>
標籤。
<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: '<BCOV_AUTH_TOKEN>'
})
.then(function(videoReturned){
myPlayer.catalog.load(videoReturned);
})
.catch(function(err){
console.log('err:', err);
});
})();
</script>
SSAI配置
如果要將PAS與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: 'BCOV_AUTH_TOKEN',
adConfigId: '<YOUR_ADD_CONFIG_ID>'
})
.then(function(videoReturned){
myPlayer.catalog.load(videoReturned);
})
.catch(function(err){
console.log('err:', err);
});
})();
</script>
使用自定義實現
您可能正在使用自定義實現,而沒有bcovAuthToken
用設置值catalog.get()方法要求。如果您使用自己的播放器或第三方播放器,則可以使用以下方法之一將令牌傳遞到許可請求中:
-
HTTP標頭:
BCOV-Auth
(HLSe不支持) -
曲奇餅:
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 (BCOV_AUTH_TOKEN && source.key_systems) {
source.emeHeaders = {
'BCOV-Auth': BCOV_AUTH_TOKEN
};
}
}
myPlayer.catalog.load(video);
})
.catch(function(err){
console.log('err:', err);
});
})();
</script>