네이티브 SDK를 사용한 포렌식 워터마킹

이 항목에서는 Brightcove Native SDK를 사용하여 Forensic Watermarking으로 보호되는 비디오를 제공하는 방법을 배웁니다.

서문

Forensic Watermarking을 사용하면 불법 복제 및 무단 콘텐츠 공유로부터 프리미엄 콘텐츠를 보호할 수 있습니다. 이 기능은 동영상에 보이지 않는 워터마크를 추가하여 콘텐츠 유출을 추적할 수 있습니다.

자세한 내용은 개요를 참조하십시오. 포렌식 워터마킹문서.

요구 사항

이 기능을 지원하려면 다음 요구 사항이 필요합니다.

설정

플레이어 구성 외에 설정 요구 사항이 있습니다. 자세한 내용은개요를 참조하십시오. 포렌식 워터마킹문서.

디바이스 OS 버전

  • Android 6.0 이상
  • iOS 11.0 이상

브라이트코브 SDK 버전

  • Android 6.16.3 이상용 기본 SDK
  • iOS 6.9.0 이상용 네이티브 SDK

안드로이드 구현

포렌식 워터마킹을 위한 구성은 비디오 수준에서 수행됩니다.

  1. 시청자 ID가 분석 웹 비콘 ( user필드 내) 에 전달되도록 플레이어를 등록 시스템과 통합해야 합니다.

    예:

    HashMap<String, String> baseParams = new HashMap<>();
      baseParams.put(Analytics.Fields.USER, "viewer id");
      baseParams.put(Analytics.Fields.APPLICATION_ID, "application id");
      
      HashMap<String, Object> eventParams = new HashMap<>();
      eventParams.put(Analytics.Fields.BASE_PARAMS, baseParams);
      eventEmitter.emit(EventType.ADD_ANALYTICS_BASE_PARAMS, eventParams);          
    
  2. Catalog.findVideo또는Catalog.findPlaylist메서드 호출에서 워터마킹 토큰을 추가할VideoUtil메서드를 추가합니다.

    온비디오 콜백에서

    public void onVideo(Video video) {
        VideoUtil.addWatermarkingToken(video, yourWatermarkingToken);
        brightcoveVideoView.add(video);
    } 
    

    온플레이리스트 콜백에서

    public void onPlaylist(Playlist playlist) {
      for (Video video : testPlaylist.getVideos()) {
          VideoUtil.addWatermarkingToken(video, yourWatermarkingToken);
      }
      brightcoveVideoView.addAll(testPlaylist.getVideos());
    }
    
  3. 이 호출을 통해 카탈로그가 Playback API에서 비디오 또는 재생목록 메타데이터를 검색하면VideoUtil클래스는 비디오의 소스 URL에{WMT}있는 위치에 관계없이 워터마킹 토큰 자리 표시자를 토큰 값으로 대체합니다. 이 토큰은 워터마크될 수 있는 재생 목록의 각 비디오에 대해 대체될 수 있습니다.

크롬캐스트

워터마크가 표시된 동영상을 캐스팅하려면 Cast 플러그인으로BrightcoveCastCustomData객체를 빌드할 때 애플리케이션 ID, 워터마킹 토큰 및 사용자 ID를 제공해야 합니다.

BrightcoveCastCustomData객체를 설정하는 코드에 다음 줄을 추가하세요.

public static void setupGoogleCast() {
GoogleCastComponent.Builder castPluginBuilder = new GoogleCastComponent.Builder(eventEmitter, context)
        .setAutoPlay(isAutoPlayEnabled)
        .setQueuingSupported(isQueuingSupported);

    BrightcoveCastCustomData.Builder customDataBuilder = new BrightcoveCastCustomData.Builder(context)
        .setApplicationId(yourApplicationId)
        .setWatermarkingToken(yourWatermarkingToken);
        .setUserId(yourUserId);
        // Add the custom data elements to the castPluginBuilder
        
    castPluginBuilder
        .setEnableCustomData(true)
        .setCustomData(customDataBuilder.build());
}            

워터마크가 표시된 동영상이 있는 캐스트 연결을 열면 다음과 같은 형식의customData객체가 표시됩니다.

{
      "accountId": "yourAccountId",
      "analyticsParams": {
          "application": "yourApplicationId",
          "user": "yourUserId"
      },
      "catalogParams": {
          "type": "video",
          "id": "videoId",
          "policyKey": "yourPolicyKey",
          "watermarkingToken": "yourWatermarkingToken"
      }
  }  

오프라인 재생

비디오를 다운로드하는 프로세스에는 현재 비디오 메타데이터를 검색하기 위한 하나 이상의 Catalog 호출이 포함될 수 있습니다. 브라이트코브는 구매 또는 대여 라이선스를 취득하거나 비디오를 다운로드할 때 표시될 수 있는 콜백에 위의onVideo콜백 코드를 추가할 것을 권장합니다.

동영상이 다운로드되면 오프라인 재생이 정상적으로 작동합니다.

자세한 내용은오프라인 재생 샘플 앱을 참조하십시오 .

iOS 구현

Forensic Watermarking을 사용하도록 플레이어를 구성하려면 다음 단계를 따르십시오.

  1. 시청자 ID가 분석 웹 비콘 ( user필드 내) 에 전달되도록 플레이어를 등록 시스템과 통합해야 합니다.

    여기에서 사용자 ID 및 애플리케이션 ID에 대한 값을 제공합니다.

    @try
      {
        [BCOVGlobalConfiguration.sharedConfig setValue:@{
          @"privateUser": @"your user id",
          @"privateApplication": @"your application id"
        }
        forKey:@"privateSessionAnalytics"];
      }
      @catch (NSException *e)
      {
        NSLog(@"%@", e.description);
      }       
    
  2. 단일 비디오 또는 재생 목록에 대한 Brightcove 카탈로그 요청의 일부로 NAGRA 워터마크 토큰을 제공합니다. 이 작업은watermarkingToken속성을 사용하여 수행됩니다.

    재생 서비스에 워터마킹 토큰을 추가합니다.

    /**
    * The watermarking token for use with Forensic Watermarking
    */
    @property (nonatomic, copy) NSString *watermarkingToken;
    ...
    playbackService.watermarkingToken = self.watermarkingToken;     
    
  3. 단일 비디오 또는 재생 목록에 대한 Brightcove 카탈로그를 요청하십시오.

    비디오 요청:

    - (void)findVideoWithVideoID:(NSString *)videoID parameters:
      (NSDictionary *)parameters completion:(void (^)
      (BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
    

    재생목록 요청:

    - (void)findPlaylistWithPlaylistID:(NSString *)playlistID parameters:
      (NSDictionary *)parameters completion:(void (^)
      (BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
    

자세한 내용은 iOS용 네이티브 SDK 참조의 포렌식 워터마킹 섹션을 참조하세요.

크롬캐스트

캐스팅의 경우 워터마크 토큰과 userId 필드를 제공해야 합니다.

BrightcoveCastCustomData객체를 설정하는 코드에 다음 줄을 추가하세요.

BCOVReceiverAppConfig *appConfig = [BCOVReceiverAppConfig new];
...
appConfig.userId = @"ios-client@brightcove.com";
appConfig.watermarkingToken = watermarkingToken;
...                 

디버깅 콘솔에서 Chromecast 세션에 사용될 구성 값을 볼 수 있습니다.

Google Cast Custom Data: {
  accountId = <your_account_id>;
  analyticsParams =     {
      application = "";
      user = "ios-client@brightcove.com";
  };
  catalogParams =     {
      adConfigId = "";
      bcovAuthToken = "";
      id = <your_video_id>;
      policyKey = "<your_policy_key";
      type = video;
      watermarkingToken = "<your_watermark_token";
  };    

오프라인 재생

동영상이 다운로드되면 오프라인 재생이 정상적으로 작동합니다.

이 기능을 시작하려면 iOS App Developer's Guide to Offline Playback 참조를 확인하세요.

제한 사항

이 기능의 제한 사항에 대한 자세한 내용은 개요를 참조하십시오. 포렌식 워터마킹문서.