네이티브 SDK를 사용한 재생 제한

이 항목에서는 Brightcove Native SDK에서 재생 제한을 사용하는 방법을 배웁니다.

서문

기본적으로 네이티브 SDK는 Brightcove Playback API와 통신하여 비디오 및 재생 목록 콘텐츠를 검색합니다. 재생 권한 및 제한을 관리하는 새로운 시스템이 Playback API 앞에 있으며 DRM 라이선스를 사용하여 재생 권한 부여를 제공합니다.

DRM을 사용하거나 사용하지 않고 재생 권한을 사용할 수 있지만 런타임 제한을 사용하려면 JWT(JSON Web Token)를 사용해야 합니다.

라이선스 키 보호는 DRM 보호 또는 HTTP HLSe(Live Streaming Encryption) 콘텐츠와 함께 Dynamic Delivery를 사용할 때 추가 보안 수준을 제공합니다. 라이선스 요청은 서명된 JSON 웹 토큰(JWT)을 사용하여 인증할 수 있습니다.

비디오가 플레이어에 로드되고 소스가 선택되면 비디오 라이선스를 요청할 때 JWT가 사용됩니다.

이 기능에 대한 자세한 내용은 다음을 참조하세요.

요구 사항

재생 제한을 사용하려면 다음 버전의 Brightcove Native SDK가 필요합니다.

  • 안드로이드 : Android용 네이티브 SDK 버전 6.11.0 이상
  • iOS : iOS용 네이티브 SDK 버전 6.7.0이상

추가 사항

재생 제한을 사용하기 위한 추가 기능은 다음과 같습니다.

  • 안드로이드 : Live HLSe 라이선스 키 보호에 대한 iOS 버전 7.1.3 용 네이티브 SDK 고정 지원
  • iOS : iOS 버전 6.10.5용 네이티브 SDK에 Live HLSe 라이선스 키 보호에 대한 지원이추가되었습니다.

어떻게 작동합니까?

재생 제한은 다음을 포함하는 전체 솔루션을 나타냅니다.

  • 재생 권한
  • 라이센스 키 보호

재생 권한

기본적으로 Native SDK는 정책 키가 있는 경우 Playback API에 요청합니다. SDK는 요청을 다음 엔드포인트로 보내고 콘텐츠를 검색합니다.

edge.api.brightcove.com

Playback API 요청으로 재생 권한을 확인하려면 정책 키를 포함하지 않습니다. 정책 키가 없는 경우 SDK는 이 엔드포인트에 요청을 보냅니다.

edge-auth.api.brightcove.com

재생 권한과 관련된 모든 검사를 통과하면 콘텐츠가 반환됩니다.

라이센스 키 보호

DRM 또는 HLSe 콘텐츠 보호는 JWT(JSON 웹 토큰)를 사용하여 모든 스트림 요청을 보호할 수 있는 라이선스/키 요청을 사용합니다.

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. JWT를 만듭니다. 자세한 내용은개요를 참조하십시오. 브라이트코브 재생 제한문서.
    2. 에서 JWT를 설정하여 카탈로그 요청과 함께 JWT를 전달하십시오HttpRequestConfig . 자세한 내용은 Android를 참조하십시오. 라이선스 키 보호섹션 사용

안드로이드: 라이센스 키 보호 사용

Android용 Native SDK는 현재 HLSe 및 Widevine DASH 소스에 대한 키/라이선스 보호를 지원합니다. 단일 비디오 또는 재생 목록에 대한 Brightcove 카탈로그 요청의 일부로 인증 토큰을 제공합니다.

Brightcove 카탈로그를 요청하려면 다음 단계를 따르십시오.

  1. HttpRequestConfig객체를 생성하고 브라이트코브 인증 토큰을 JSON 웹 토큰 값으로 설정합니다.

    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에서 처리합니다.

코드 예제

다음은 카탈로그 요청을 할 때 인증 토큰을 전달하는 방법을 보여주는 예입니다.

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

오프라인 재생

오프라인findVideorequestPurchaseLicense카탈로그와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: 재생 권한 사용

재생 권한을 확인하는 Playback API 요청을 하려면 다음 단계를 따르세요.

  1. 기본 샘플 앱으로 시작하세요 .

  2. 정책 키를BCOVPlaybackService로 설정하여 인스턴스를 생성합니다nil .

    let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
  3. 선택 사항 : 런타임 제한을 사용하려면 JWT를 생성하고 카탈로그 요청과 함께 전달해야 합니다.

    1. JWT를 만듭니다. 자세한 내용은개요를 참조하십시오. 브라이트코브 재생 제한문서.
    2. 카탈로그 요청과 함께 JWT를 전달합니다. 자세한 내용은 iOS를 참조하세요. 라이선스 키 보호섹션 사용

iOS: 라이센스 키 보호 사용

라이선스 키 보호를 사용하는 경우 JSON 웹 토큰(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;

HLSe 및 FairPlay 라이선스 취득을위한 토큰 사용에 대한 세부 정보는 SDK에서 처리합니다.

자세한 내용은 iOS용 네이티브 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).

자세한 내용은 iOS용 네이티브 SDK 레퍼런스의 FairPlay 라이선스 갱신섹션을 참조하십시오.

배달 규칙을 통한 라이선스 키 보호

라이선스 키 보호를 배달 규칙과 결합하려면 다음을 수행하십시오.

  • 배달 규칙 ID에 대한 매개변수 정의
  • 재생 API에 대한 카탈로그 호출과 함께 배달 규칙 ID를 매개변수로 전달합니다.
  • authToken파라미터를 사용하여 JSON 웹 토큰 (JWT) 을 전달합니다.

다음은 코드 예제입니다.

- (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 - 라이센스 배달을 계속할 수 없어야 합니다.