Filigranage judiciaire avec les SDK natifs

Dans cette rubrique, vous apprendrez à utiliser les SDK natifs de Brightcove pour diffuser des vidéos protégées par un filigrane judiciaire.

Introduction

Avec Forensic Watermarking, vous pouvez protéger votre contenu premium contre le piratage et le partage de contenu non autorisé. Cette fonctionnalité ajoute un filigrane invisible à vos vidéos, vous permettant de suivre toute fuite de contenu.

Pour plus d'informations, consultez la vue d'ensemble : Document de filigrane médico-légal.

Exigences

Les exigences suivantes sont nécessaires pour prendre en charge cette fonctionnalité :

Configuration

Il existe des exigences de configuration en plus de la configuration de votre lecteur. Pour plus de détails, consultez la présentation : Document de filigrane médico-légal.

Version du système d'exploitation de l'appareil

  • Android 6.0 et versions ultérieures
  • iOS 11.0 et versions ultérieures

Version du SDK Brightcove

  • SDK natif pour Android 6.16.3 et plus récent
  • SDK natif pour iOS 6.9.0 et versions ultérieures

Implémentation Android

La configuration du filigrane judiciaire est effectuée au niveau de la vidéo.

  1. Le lecteur doit être intégré à votre système d'enregistrement pour qu'un identifiant de visionneuse soit transmis sur la balise Web Analytics (sur le user terrain).

    Par exemple :

    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. Dans le Catalog.findVideo ou Catalog.findPlaylist appels de méthode, ajoutez le VideoUtil méthode pour ajouter votre jeton de filigrane.

    Dans le rappel onVideo

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

    Dans le rappel onPlaylist

    public void onPlaylist(Playlist playlist) {
      for (Video video : testPlaylist.getVideos()) {
          VideoUtil.addWatermarkingToken(video, yourWatermarkingToken);
      }
      brightcoveVideoView.addAll(testPlaylist.getVideos());
    }
    
  3. Avec cet appel en place, lorsque le catalogue récupère les métadonnées de la vidéo ou de la liste de lecture à partir de l'API de lecture, le VideoUtil la classe remplacera l'espace réservé du jeton de filigrane {WMT} avec la valeur du jeton, où qu'elle se trouve dans les URL sources de la vidéo. Ce jeton peut être remplacé pour chaque vidéo d'une liste de lecture pouvant être filigranée.

Chromecast

Pour diffuser une vidéo filigranée, vous devez fournir votre ID d'application, votre jeton de filigrane et votre ID utilisateur lors de la création de votre BrightcoveCastCustomData objet avec le plugin Cast.

Dans votre code pour configurer le BrightcoveCastCustomData objet, ajoutez cette ligne :

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

Lorsque vous ouvrez une connexion Cast avec une vidéo filigranée, vous devriez voir un customData objet formaté comme suit :

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

Lecture hors ligne

Le processus de téléchargement d'une vidéo peut impliquer plusieurs appels de catalogue pour récupérer les métadonnées vidéo actuelles. Brightcove recommande d'ajouter le onVideo code de rappel ci-dessus à vos rappels qui peuvent être présents lors de l'acquisition de licences d'achat ou de location et lors du téléchargement de la vidéo.

Une fois la vidéo téléchargée, la lecture hors ligne devrait fonctionner comme d'habitude.

Pour plus de détails, consultez le Exemple d'application de lecture hors ligne.

Implémentation iOS

Pour configurer un lecteur afin qu'il utilise Forensic Watermarking, procédez comme suit :

  1. Le lecteur doit être intégré à votre système d'enregistrement pour qu'un identifiant de visionneuse soit transmis sur la balise Web Analytics (sur le user terrain).

    Ici, vous fournirez des valeurs pour l'ID utilisateur et l'ID d'application :

    @try
      {
        [BCOVGlobalConfiguration.sharedConfig setValue:@{
          @"privateUser": @"your user id",
          @"privateApplication": @"your application id"
        }
        forKey:@"privateSessionAnalytics"];
      }
      @catch (NSException *e)
      {
        NSLog(@"%@", e.description);
      }       
    
  2. Dans le cadre de la demande de catalogue Brightcove pour une seule vidéo ou une liste de lecture, vous fournirez votre jeton de filigrane NAGRA. Cela se fait à l'aide du watermarkingToken biens.

    Ajoutez votre jeton de filigrane au service de lecture.

    /**
    * The watermarking token for use with Forensic Watermarking
    */
    @property (nonatomic, copy) NSString *watermarkingToken;
    ...
    playbackService.watermarkingToken = self.watermarkingToken;     
    
  3. Faites votre demande au catalogue Brightcove pour une seule vidéo ou une liste de lecture.

    Pour une demande de vidéo :

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

    Pour une demande de playlist :

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

Pour plus de détails, consultez la section Forensic Watermarking de la référence Native SDK for iOS.

Chromecast

Pour la diffusion, vous devrez fournir le jeton de filigrane et les champs userId.

Dans votre code pour configurer le BrightcoveCastCustomData objet, ajoutez cette ligne :

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

Dans la console de débogage, vous pouvez voir les valeurs de configuration qui seront utilisées pour votre session 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";
  };    

Lecture hors ligne

La lecture hors ligne devrait fonctionner comme d'habitude une fois la vidéo téléchargée.

Pour commencer avec cette fonctionnalité, consultez le Guide du développeur d'applications iOS pour la lecture hors ligne référence.

Contraintes

Pour plus de détails sur les limites de cette fonctionnalité, consultez la vue d'ensemble : Document de filigrane médico-légal.