原生 SDK 的播放限制

在本主題中,您將了解如何將播放限制與 Brightcove 本機 SDK 一起使用。

簡介

默認情況下,本機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 請求,請執行以下步驟:

  1. 開始於基本示例應用程序 .

  2. 使用沒有策略密鑰的目錄生成器模式。

    Catalog catalog = new Catalog.Builder(eventEmitter, account).build();

    如果您正在關注 Brightcove 示例應用程序,它會獲取如下所示的帳戶 ID:

    String account = getString(R.string.account);
  3. 選用性:如果要使用運行時限制,則需要創建 JWT 並將其與目錄請求一起傳遞。

    1. 創建您的智威湯遜。有關詳細信息,請參閱概述:Brightcove 播放限制文檔。
    2. 通過在HttpRequestConfig .有關詳細信息,請參閱安卓:使用許可證密鑰保護部分。

安卓:使用許可證密鑰保護

適用於 Android 的本機 SDK 目前支持 HLSe 和 Widevine DASH 源的密鑰/許可證保護。您將在Brightcove目錄請求中為單個視頻或播放列表提供授權令牌。

要發出 Brightcove 目錄請求,請執行以下步驟:

  1. 創建一個HttpRequestConfig對象並將 Brightcove 授權令牌設置為您的 JSON Web 令牌的值。

    HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
      .setBrightcoveAuthorizationToken("your jwt")
      .build();
    
  2. 使用以下目錄方法之一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 , requestPurchaseLicenserequestRentalLicense方法都需要一個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 請求,請執行以下步驟:

  1. 開始於基本示例應用程序 .

  2. 創建一個實例BCOVPlaybackService , 將策略鍵設置為nil .

    let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
  3. 選用性:如果要使用運行時限制,則需要創建 JWT 並將其與目錄請求一起傳遞。

    1. 創建您的智威湯遜。有關詳細信息,請參閱概述:Brightcove 播放限制文檔。
    2. 通過目錄請求傳遞您的 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-授權交付不得繼續