サポート問い合わせ先| システムステータス
ページコンテンツ

    ネイティブSDKでの再生制限

    「このトピックでは、BrightcoveネイティブSDKで再生制限を使用する方法を学習します。」

    はじめに

    デフォルトでは、ネイティブSDKはBrightcove Playback APIと通信して、ビデオおよびプレイリストのコンテンツを取得します。再生権限と制限を管理する新しいシステムは、Playback APIの前に配置され、DRMライセンスを使用して再生認証を提供します。

    DRMの有無にかかわらず再生権を使用できますが、ランタイム制限を使用する場合は、JSON Web Token(JWT)を使用する必要があります。

    License Keys Protectionは、Dynamic DeliveryでDRM保護またはHTTP Live Streaming Encryption(HLSe)コンテンツを使用する場合に、追加のセキュリティレベルを提供します。ライセンスリクエストは、署名されたJSON Web Token(JWT)を使用して認証できます。

    JWTは、ビデオがプレーヤーにロードされ、ソースが選択されると、ビデオライセンスをリクエストするときに使用されます。

    この機能の詳細については、以下を参照してください。

    要件

    再生制限を使用するには、Brightcove Native SDKの次のバージョンが必要です。

    • Android: Android用ネイティブSDKバージョン6.11.0以降
    • iOS: iOS用ネイティブSDKバージョン6.7.0以降

    追加機能

    再生制限の使用に関する追加機能は次のとおりです。

    • Android: Android用ネイティブSDKバージョン7.1.3でライブHLSeライセンスキー保護のサポートを修正
    • iOS: iOS用ネイティブSDKバージョン6.10.5でライブHLSeライセンスキー保護のサポートを追加

    仕組み

    再生制限は、次のようなソリューション全体を指します。

    • 再生権
    • ライセンスキー保護

    再生権

    デフォルトでは、ネイティブSDKは、ポリシーキーがある場合、Playback APIへのリクエストを行います。SDKはリクエストを次のエンドポイントに送信し、コンテンツを取得します。

    edge.api.brightcove.com

    Playback APIリクエストで再生権をチェックするには、ポリシーキーを含めません。ポリシーキーがない場合、SDKはリクエストを次のエンドポイントに送信します。

    edge-auth.api.brightcove.com

    再生権に関連するすべてのチェックに合格すると、コンテンツが返されます。

    ライセンスキー保護

    DRMまたはHLSeコンテンツ保護は、ライセンス/キーリクエストを使用します。これにより、JSON Web Token(JWT)を使用して、すべてのストリームリクエストを保護できます。

    Playback APIへのリクエストにはポリシーキーが含まれ、SDKはリクエストを次のエンドポイントに送信します。

    edge.api.brightcove.com

    Android:再生権の使用

    再生権をチェックするPlayback APIリクエストを行うには、次の手順に従います。

    1. 基本サンプルアプリから始めます。

    2. ポリシーキーなしでCatalog Builderパターンを使用します。

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

      Brightcoveサンプルアプリをフォローしている場合は、次のようにアカウントIDを取得します。

      String account = getString(R.string.sdk_demo_account);
    3. オプション:ランタイム制限を使用する場合は、JWTを作成してカタログリクエストで渡す必要があります。

      1. JWTを作成します。詳細については、概要:Brightcove再生制限ドキュメントを参照してください。
      2. HttpRequestConfigでJWTを設定して、カタログリクエストでJWTを渡します。詳細については、Android:ライセンスキー保護の使用セクションを参照してください。

    Android:ライセンスキー保護の使用

    Android用ネイティブSDKは現在、HLSeおよびWidevine DASHソースのキー/ライセンス保護をサポートしています。単一のビデオまたはプレイリストのBrightcoveカタログリクエストの一部として認証トークンを提供します。

    Brightcoveカタログリクエストを行うには、次の手順に従います。

    1. HttpRequestConfigオブジェクトを作成し、Brightcove Authorization TokenをJSON Web Tokenの値に設定します。

      HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
        .setBrightcoveAuthorizationToken("your jwt")
        .build();
      
    2. HttpRequestConfigオブジェクトで次のいずれかのCatalogメソッドを使用します。

      ビデオリクエストの場合は、次のいずれかを使用します。

      findVideoByID(String, HttpRequestConfig, VideoListener)
      
      findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
      

      プレイリストリクエストの場合は、次のいずれかを使用します。

      findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
      
      findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
      

      HLSeおよびWidevineライセンス取得のトークン使用の詳細は、SDKによって処理されます。

    コード例

    Catalogリクエストを行う際に認証トークンを渡す方法の例を次に示します。

    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(){...});
    

    オフライン再生

    OfflineCatalog は、HttpRequestConfig を受け取る findVideoByID などのカタログ検索メソッドを継承しています。requestPurchaseLicense と requestRentalLicense のオーバーロードも、この設定を受け取ります。次の抜粋では、オフライン再生サンプルアプリの PlaylistModel.findPlaylist ヘルパーを使用しています。

    例を次に示します。

    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(@NonNull List<CatalogError> errors) {
            Log.e(TAG, "Failed to find playlist: " + errors);
            onVideoListUpdated(true);
        }
    });

    詳細については、オフライン再生サンプルアプリを参照してください。

    配信ルールでのライセンスキー保護

    ライセンスキー保護を配信ルールと組み合わせるには、HttpRequestConfig.Builderを次のように設定します。

    • Brightcove Authorization Token(JWT)を設定
    • Delivery Rule Config IDを設定

    結果のBuilder設定は次のようになります。

    HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
      .addQueryParameter(HttpRequestConfig.KEY_DELIVERY_RULE_CONFIG_ID, "your rules id")
      .setBrightcoveAuthorizationToken("your jwt")
      .build();
    

    応答

    ライセンスキー保護には次の応答が関連付けられています。

    • 200 - ライセンスの続行が許可されています
    • 401 - ライセンス配信の続行を許可してはなりません

    iOS:再生権の使用

    再生権をチェックするPlayback APIリクエストを行うには、次の手順に従います。

    1. 基本サンプルアプリから始めます。

    2. BCOVPlaybackServiceのインスタンスを作成し、Policy Keyをnilに設定します。

      let playbackService = BCOVPlaybackService(withAccountId: kViewControllerAccountID, policyKey: nil)
    3. オプション:ランタイム制限を使用する場合は、JWTを作成してカタログリクエストで渡す必要があります。

      1. JWTを作成します。詳細については、概要:Brightcove再生制限ドキュメントを参照してください。
      2. カタログリクエストでJWTを渡します。詳細については、iOS:ライセンスキー保護の使用セクションを参照してください。

    iOS:ライセンスキー保護の使用

    ライセンスキー保護を使用する場合は、JSON Web Token(JWT)を構成ディクショナリの BCOVPlaybackService.ConfigurationKeyAuthToken に渡します。同じ構成ディクショナリで、ConfigurationKeyAssetID または ConfigurationKeyAssetReferenceID を使ってビデオまたはプレイリストを指定します。

    ビデオリクエストの場合:

    let configuration = [
        BCOVPlaybackService.ConfigurationKeyAssetID: videoID,
        BCOVPlaybackService.ConfigurationKeyAuthToken: authToken
    ]
    playbackService.findVideo(withConfiguration: configuration,
                              queryParameters: nil) { video, jsonResponse, error in
        // ...
    }

    プレイリストリクエストの場合:

    let configuration = [
        BCOVPlaybackService.ConfigurationKeyAssetID: playlistID,
        BCOVPlaybackService.ConfigurationKeyAuthToken: authToken
    ]
    playbackService.findPlaylist(withConfiguration: configuration,
                                 queryParameters: nil) { playlist, jsonResponse, error in
        // ...
    }

    HLSeおよびFairPlayライセンス取得のトークン使用の詳細は、SDKによって処理されます。

    詳細については、iOS用ネイティブSDKリファレンスのPlayback Authorization Serviceセクションを参照してください。

    オフライン再生

    オフライン再生でPlayback Authorization Serviceを使用している場合、認証トークンを受け入れる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)。

    詳細については、iOS用ネイティブSDKリファレンスのRenewing a FairPlay Licenseセクションを参照してください。

    配信ルールでのライセンスキー保護

    ライセンスキーでビデオコンテンツを保護するには、findVideoWithConfiguration:queryParameters:completion:メソッドを使用します。 このメソッドは、設定ディクショナリを使用してビデオIDを指定します。クエリパラメータをディクショナリとして渡し、完了ブロックを処理してビデオ再生を管理します。

    コード例を次に示します。

    - (void)requestContentFromPlaybackService
    {
      NSDictionary *configuration = @{BCOVPlaybackService.ConfigurationKeyAssetID: kViewControllerVideoID};
    
      [self.playbackService findVideoWithConfiguration:configuration queryParameters:nil completion:^(BCOVVideo *video, id jsonResponse, NSError *error) {
    
        if (video)
        {
          [self.playbackController setVideos:@[ video ]];
        }
        else
        {
          NSLog(@"ViewController Debug - Error retrieving video: `%@`", error);
        }
      }];
    }
    

    応答

    ライセンスキー保護には次の応答が関連付けられています。

    • 200 - ライセンスの続行が許可されています
    • 401 - ライセンス配信の続行を許可してはなりません

    ページの最終更新日20 Oct 2026