簡介
默認情況下,本機SDK與Brightcove Playback API對話,以檢索您的視頻和播放列表內容。用於管理播放權限和限制的新系統位於播放 API 前面,並使用 DRM 授權提供播放授權。
您可以在有或沒有 DRM 的情況下使用播放權限,但如果您選擇使用運行時限制,則需要使用 JSON Web 令牌 (JWT)。
在將動態交付與受 DRM 保護或 HTTP 實時流加密 (HLSe) 內容一起使用時,許可證密鑰保護可提供額外級別的安全性。可以使用簽名的 JSON Web 令牌 (JWT) 對許可請求進行身份驗證。
JWT 在請求視頻許可證時使用,一旦視頻已加載到播放器並選擇了源。
有關此功能的更多信息,請參閱以下內容:
需求
要使用播放限制,您將需要以下版本的 Brightcove 本機 SDK:
- 安卓:Native SDK for Android 版本 6.11.0 或更高版本
- iOS :Native SDK for iOS 版本 6.7.0 或更高版本
添加
使用播放限制的其他功能包括:
- 安卓:Native SDK for iOS 版本 7.1.3 修復了對 Live HLSe 許可證密鑰保護的支持
- iOS :Native SDK for iOS 版本 6.10.5 添加了對 Live HLSe 許可證密鑰保護的支持
它是如何工作的?
播放限制是指整個解決方案,其中包括:
- 播放權限
- 許可證密鑰保護
播放權限
默認情況下,如果 Playback API 具有策略密鑰,則 Native SDK 會向其發出請求。SDK 將請求發送到以下端點,並檢索您的內容:
edge.api.brightcove.com
要使用您的播放 API 請求檢查播放權限,您將不包括策略密鑰。當沒有Policy Key時,SDK會向這個端點發送請求:
edge-auth.api.brightcove.com
如果與播放權限相關的所有檢查均通過,則您的內容將被退回。
許可證密鑰保護
DRM 或 HLSe 內容保護使用許可證/密鑰請求,它可以使用 JSON Web 令牌 (JWT) 保護每個流請求。
您對 Playback API 的請求將包含策略密鑰,SDK 會將請求發送到以下端點:
edge.api.brightcove.com
安卓:使用播放權限
要發出檢查播放權限的播放 API 請求,請執行以下步驟:
-
開始於基本示例應用程序 .
-
使用沒有策略密鑰的目錄生成器模式。
Catalog catalog = new Catalog.Builder(eventEmitter, account).build();
如果您正在關注 Brightcove 示例應用程序,它會獲取如下所示的帳戶 ID:
String account = getString(R.string.account);
-
選用性:如果要使用運行時限制,則需要創建 JWT 並將其與目錄請求一起傳遞。
- 創建您的智威湯遜。有關詳細信息,請參閱概述:Brightcove 播放限制文檔。
- 通過在
HttpRequestConfig
.有關詳細信息,請參閱安卓:使用許可證密鑰保護部分。
安卓:使用許可證密鑰保護
適用於 Android 的本機 SDK 目前支持 HLSe 和 Widevine DASH 源的密鑰/許可證保護。您將在Brightcove目錄請求中為單個視頻或播放列表提供授權令牌。
要發出 Brightcove 目錄請求,請執行以下步驟:
-
創建一個
HttpRequestConfig
對象並將 Brightcove 授權令牌設置為您的 JSON Web 令牌的值。HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .setBrightcoveAuthorizationToken("your jwt") .build();
-
使用以下目錄方法之一
HttpRequestConfig
目的:對於視訊要求,請使用下列其中一項:
findVideoByID(String, HttpRequestConfig, VideoListener)
findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
對於播放清單要求,請使用下列其中一項:
findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
SDK處理HLSe和Widevine許可證獲取中令牌使用的詳細信息。
程式碼範例
以下示例展示瞭如何在發出目錄請求時傳遞您的授權令牌:
String myToken = "your jwt";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.setBrightcoveAuthorizationToken(myToken)
.build();
...
Catalog catalog = new Catalog.Builder(eventEmitter, account)
.setPolicy(getString(R.string.policy))
.build();
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});
離線播放
離線目錄findVideo
, requestPurchaseLicense
和requestRentalLicense
方法都需要一個HttpRequestConfig
作為論據。
這是一個例子:
private HttpRequestConfig httpRequestConfig;
private String myToken = "your jwt";
...
HttpRequestConfig.Builder httpRequestConfigBuilder = new HttpRequestConfig.Builder();
httpRequestConfigBuilder.setBrightcoveAuthorizationToken(myToken);
httpRequestConfig = httpRequestConfigBuilder.build();
playlist.findPlaylist(catalog, httpRequestConfig, new PlaylistListener() {
@Override
public void onPlaylist(Playlist playlist) {
videoListAdapter.setVideoList(playlist.getVideos());
onVideoListUpdated(false);
brightcoveVideoView.addAll(playlist.getVideos());
}
@Override
public void onError(String error) {
String message = showToast("Failed to find playlist[%s]: %s", playlist.displayName, error);
Log.w(TAG, message);
onVideoListUpdated(true);
}
});
有關詳細信息,請參閱離線播放示例應用 .
使用交付規則保護許可證密鑰
要將許可證密鑰保護與交付規則相結合,請配置HttpRequestConfig.Builder
執行以下操作:
- 設置 Brightcove 授權令牌 (JWT)
- 設置傳遞規則配置 ID
生成的構建器配置如下所示:
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.addQueryParameter(HttpRequestConfig.KEY_DELIVERY_RULE_CONFIG_ID, "your rules id")
.setBrightcoveAuthorizationToken("your jwt")
.build();
回應
以下響應與許可證密鑰保護相關聯:
- 200-允許授權繼續
- 401-授權交付不得繼續
iOS:使用播放權限
要發出檢查播放權限的播放 API 請求,請執行以下步驟:
-
開始於基本示例應用程序 .
-
創建一個實例
BCOVPlaybackService
, 將策略鍵設置為nil
.let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
-
選用性:如果要使用運行時限制,則需要創建 JWT 並將其與目錄請求一起傳遞。
- 創建您的智威湯遜。有關詳細信息,請參閱概述:Brightcove 播放限制文檔。
- 通過目錄請求傳遞您的 JWT。詳見 iOS:使用許可證密鑰保護部分。
iOS:使用許可證密鑰保護
使用許可證密鑰保護時,您將需要使用允許您傳入 JSON Web 令牌 (JWT) 的播放服務方法。這是使用authToken
範圍。
對於視訊要求,請使用下列其中一項:
- (void)findVideoWithVideoID:(NSString *)videoID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findVideoWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
對於播放清單要求,請使用下列其中一項:
- (void)findPlaylistWithPlaylistID:(NSString *)playlistID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findPlaylistWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
SDK處理HLSe和FairPlay許可證獲取的令牌使用細節。
有關詳細信息,請參閱播放授權服務 Native SDK for iOS 參考部分。
離線播放
如果您將“播放授權服務”與“脫機播放”一起使用,則有一種新的方法來續訂接受授權令牌的FairPlay許可證:
// Request license renewal
[BCOVOfflineVideoManager.sharedManager renewFairPlayLicense:offlineVideoToken
video:video // recent video from Playback API or Playback Service class
authToken: authToken
Parameters: parameters
completion:^(BCOVOfflineVideoToken offlineVideoToken, NSError *error)
{
// handle errors
}];
完成許可證續訂後,將使用傳遞的脫機視頻令牌調用完成塊。一個NSError
將指示發生的任何問題(如果沒有錯誤則為 nil)。
有關詳細信息,請參閱更新 FairPlay 許可證 Native SDK for iOS 參考部分。
使用交付規則保護許可證密鑰
要將許可證密鑰保護與交付規則相結合,請執行以下操作:
- 定義傳遞規則 ID 的參數
- 通過對 Playback API 的目錄調用將傳遞規則 ID 作為參數傳遞
- 使用
authToken
範圍
這是一個代碼示例:
- (void)requestContentFromPlaybackService
{
NSDictionary *playbackAPIParameters = @{@"config_id":@"your rules id"};
[self.playbackService findVideoWithVideoID:kViewControllerVideoID
authToken:(NSString *)authToken
parameters:playbackAPIParameters
completion:^(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error) {
if (video)
{
[self.playbackController setVideos:@[ video ]];
}
else
{
NSLog(@"ViewController Debug - Error retrieving video playlist: `%@`", error);
}
}];
}
回應
以下響應與許可證密鑰保護相關聯:
- 200-允許授權繼續
- 401-授權交付不得繼續