簡介
當使用具有受 DRM 保護或 HTTP 即時串流加密 (HLSE) 內容的動態傳遞時,Brightcove 的播放授權服務 (PAS) 提供額外的安全性。
使用 PAS,許可證請求將使用簽名的 JSON Web 令牌(JWT)進行身份驗證。
在將視頻加載到播放器並選擇了源之後,在請求視頻許可證時使用它。
有關PAS的更多信息,請參見概述:帶有播放授權服務文件的 DRM 。
安卓實作
Android的Native SDK當前支持HLSe和Widevine DASH源的PAS。您將在Brightcove目錄請求中為單個視頻或播放列表提供授權令牌。
要使用PAS發出Brightcove目錄請求,請按照下列步驟操作:
-
創建一個
HttpRequestConfig
對象並設置Brightcove授權令牌,如下所示:HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .setBrightcoveAuthorizationToken(myToken) .build();
授權令牌的值將是您的JSON Web令牌的值。
-
創建完
HttpRequestConfig
對象,您可以將其傳遞給以下Catalog方法之一:對於視訊要求,請使用下列其中一項:
findVideoByID(String, HttpRequestConfig, VideoListener)
findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
對於播放清單要求,請使用下列其中一項:
findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
SDK處理HLSe和Widevine許可證獲取中令牌使用的詳細信息。
程式碼範例
以下示例顯示了發出目錄請求時如何傳遞授權令牌:
String myToken = "...";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.setBrightcoveAuthorizationToken(myToken)
.build();
…
Catalog catalog = new Catalog(eventEmitter, accountId, policyKey, playbackApiBaseUrl);
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});
離線播放
離線目錄findVideo
,requestPurchaseLicense
和requestRentalLicense
方法都需要HttpRequestConfig
作為爭論。
private HttpRequestConfig httpRequestConfig;
private String pasToken = "YOUR_PAS_TOKEN";
...
HttpRequestConfig.Builder httpRequestConfigBuilder = new HttpRequestConfig.Builder();
httpRequestConfigBuilder.setBrightcoveAuthorizationToken(pasToken);
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);
}
});
有關詳細信息,請參見離線播放示例應用。
回應
以下響應與 PAS 有關:
- 200-允許授權繼續
- 401-授權交付不得繼續
限制
當前版本有一個限制:
- 播放授權不支持Chromecast。
iOS 實作
使用Brightcove的播放授權服務時,您將需要使用允許您傳遞授權令牌的播放服務方法。
對於視訊要求,請使用下列其中一項:
- (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許可證獲取的令牌使用細節。
有關詳細信息,請參見播放授權服務適用於iOS的Native SDK的“參考”部分。
離線播放
如果您將“播放授權服務”與“脫機播放”一起使用,則有一種新的方法來續訂接受授權令牌的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許可證適用於iOS的Native SDK的“參考”部分。
回應
以下響應與 PAS 有關:
- 200-允許授權繼續
- 401-授權交付不得繼續