Brightcove 支持聯繫支持|系統狀態系統狀況
頁面內容

    在原生 SDK 中使用播放授權 DRM

    在本主題中,您將學習如何使用 Brightcove 的播放授權服務來擷取使用 Brightcove 原生 SDK 進行動態傳遞的影片。

    簡介

    當使用具有受 DRM 保護或 HTTP 即時串流加密 (HLSE) 內容的動態傳遞時,Brightcove 的播放授權服務 (PAS) 提供額外的安全性。

    使用 PAS,許可證請求將使用簽名的 JSON Web 令牌(JWT)進行身份驗證。

    在將視頻加載到播放器並選擇了源之後,在請求視頻許可證時使用它。

    有關PAS的更多信息,請參見概述:帶有播放授權服務文件的 DRM

    安卓實作

    Android的Native SDK當前支持HLSe和Widevine DASH源的PAS。您將在Brightcove目錄請求中為單個視頻或播放列表提供授權令牌。

    要使用PAS發出Brightcove目錄請求,請按照下列步驟操作:

    1. 創建一個HttpRequestConfig對象並設置Brightcove授權令牌,如下所示:

      HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
             .setBrightcoveAuthorizationToken(myToken)
             .build();
      

      授權令牌的值將是您的JSON Web令牌的值。

    2. 創建完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(){...});
    

    離線播放

    離線目錄findVideorequestPurchaseLicenserequestRentalLicense方法都需要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-授權交付不得繼續