Restrictions de lecture avec Brightcove Player

Dans cette rubrique, vous apprendrez à configurer le lecteur Brightcove pour qu'il utilise les restrictions de lecture.

Introduction

Par défaut, Brightcove Player communique avec l'API de lecture Brightcove. Un nouveau système de gestion des droits et restrictions de lecture se trouve devant l'API de lecture et fournit une autorisation de lecture à l'aide de licences DRM.

Vous pouvez utiliser les droits de lecture avec ou sans DRM, mais si vous choisissez d'utiliser des restrictions d'exécution, vous devrez utiliser un jeton Web JSON (JWT).

License Keys Protection offre un niveau de sécurité supplémentaire lors de l'utilisation de Dynamic Delivery avec un contenu protégé par DRM ou HTTP Live Streaming Encryption (HLSe). Les demandes de licence peuvent être authentifiées à l'aide d'un jeton Web JSON (JWT) signé. Le jeton est utilisé lors de la demande de licence vidéo, une fois que la vidéo a été chargée sur le lecteur et que la source a été sélectionnée.

Pour configurer Brightcove Player pour la protection des clés de licence, vous passerez un paramètre de jeton lors de la demande de catalogue pour la vidéo.

Si vous n'êtes pas familier avec cette fonctionnalité, reportez-vous à l' aperçu : Document sur les restrictions de lecture Brightcove.

Pour vous aider à comprendre le code dans la section suivante, passez en revue les concepts contenus dans les documents suivants :

Exigences

Voici les conditions requises pour utiliser les restrictions de lecture.

Droits de lecture

Pour utiliser les droits de lecture, vous avez besoin des éléments suivants:

  • Version du joueur 6,39,0 ou plus grand

Protection des clés de licence

Pour utiliser la protection des clés de licence, vous avez besoin des éléments suivants:

  • Version du joueur 6.33.0 ou plus tard
  • Si vous utilisez DRM, vous aurez besoin du Plug-in DRM version 5.5.0 ou plus tard

Utilisation des droits de lecture

Pour utiliser les droits de lecture, procédez comme suit :

  1. Supprimez la clé de stratégie du lecteur Brightcove. Pour plus de détails, consultez le Faire des demandes avec des droits de lecture section.

  2. Si tu as restrictions d'exécution , vous avez besoin d'un jeton d'autorisation. Lorsqu'il est spécifié, ce jeton est ajouté en tant qu'en-tête d'autorisation pour toutes les demandes ultérieures.

    Vous pouvez en ajouter un au lecteur comme suit :

    player.catalog.setBcovAuthToken('your jwt token');
  3. Après avoir modifié la clé de stratégie et/ou le jeton d'autorisation, vous êtes prêt à demander des données à l'API de lecture Brightcove et à les charger dans le lecteur. Ce processus est identique au cas par défaut.

    Voici un exemple de récupération d'une seule vidéo avec des restrictions de lecture et un jeton d'autorisation :

    HTML

    <div style="max-width: 960px;">
      <video-js id="myPlayerID"
        data-embed="default"
        controls=""
        data-application-id=""
        class="vjs-fluid"></video-js>
    </div>
    <script src="https://players.brightcove.net/your account id/your player id_default/index.min.js"></script>
    

    JavaScript

    <script>
        // +++ Add the player attributes +++
        var myPlayer,
        	myPlayerEl = document.getElementById("myPlayerID");
        myPlayerEl.setAttribute('data-account', your account id);
        myPlayerEl.setAttribute('data-player', 'your player id');
    
        // +++ Create the player +++
        myPlayer = bc(myPlayerEl);
    
        // Unset the player policy key
        myPlayer.catalog.setPolicyKey(null);
    
        // Set the authorization token
        myPlayer.catalog.setBcovAuthToken('your jwt token');
        // This should trigger a request to:
        //
        //   https://edge-auth.api.brightcove.com/playback/v1/videos/1
        //
        // With header:
        //
        //   Authorization: Bearer <span class="bcls-input">your jwt token</span>
        //
    
        myPlayer.catalog.get({id: 'your video id', type: 'video'}).
        then(function(data) {
          myPlayer.catalog.load(data);
          myPlayer.muted(true);
          myPlayer.play();
        }).
        catch(function(error) {
          throw new Error(error);
        });
    </script>

Faire des demandes avec des droits de lecture

Par défaut, tous les lecteurs Brightcove font une demande à l'API Playback si elle dispose d'une clé de stratégie. Pour effectuer des demandes qui vérifient d'abord les droits de lecture, vous devez supprimer la clé de stratégie. Voici deux façons de procéder:

Supprimer la clé de stratégie de tous les joueurs

Pour éviter l'ingestion d'une clé de stratégie pour les nouveaux lecteurs créés dans Video Cloud Studio, procédez comme suit:

  1. Contactez votre responsable de compte.
  2. Fournissez votre identifiant de compte et demandez d'activer le remove policy key drapeau.

Supprimer la clé de stratégie des joueurs individuels

Par défaut, le remove policy key l'indicateur est désactivé pour votre compte. Pour supprimer la clé de stratégie de joueurs individuels, procédez comme suit:

  1. Dans Video Cloud Studio, accédez au Joueurs module.
  2. Sélectionnez le lecteur dont vous souhaitez supprimer la clé de stratégie.
  3. Dans la navigation de gauche, sélectionnez JSON Editor.
  4. Met le policy_key champ comme "none".

    Editeur JSON
    Editeur JSON
  5. Enregistrez vos modifications et publiez votre lecteur.

Faire des demandes sans droits de lecture

Le processus peut être inversé pour renvoyer les requêtes vers l'API Playback sans droits ni restrictions.

Définissez la clé de stratégie et le jeton d'autorisation comme suit :

  1. Si vous aviez le remove policy key drapeau activé, puis contactez votre responsable de compte pour le désactiver.

  2. Si vous avez mis à jour des lecteurs individuels dans Studio, mettez à jour le JSON avec votre clé de stratégie.

    Editeur JSON
    Editeur JSON
  3. Définissez le jeton d'autorisation sur null.
    player.catalog.setBcovAuthToken(null);

Utilisation de la protection des clés de licence

Pour utiliser License Keys Protection, vous passerez une chaîne de jeton d'authentification dans le cadre de la catalogue de joueurs objet, en utilisant le nom de la propriété bcovAuthToken.

Cette approche fonctionne à la fois pour le contenu DRM et HLSE. Le lecteur détecte le type de source chargé à partir de l'API Playback et fournira la bonne implémentation pour cette source.

Pour utiliser la protection des clés de licence, procédez comme suit:

  1. Créez un jeton Web JSON (JWT) signé.
  2. Incluez ce jeton avec la demande vidéo.

    Cet exemple de code d'implémentation utilise le catalogue.get() méthode pour demander la vidéo tout en fournissant le jeton.

      <video-js id="myPlayerID"
        data-account="1507807800001"
        data-player="default"
        data-embed="default"
        controls
        data-application-id></video-js>
      <script src="//players.brightcove.net/1507807800001/default_default/index.min.js"></script>
      
      <script>
        (function() {
          var myPlayer = videojs.getPlayer('myPlayerID');
      
          myPlayer.catalog.get({
            type: 'video',
            id: '6015247091001',
            bcovAuthToken: 'your jwt token'
          })
            .then(function(videoReturned){
              myPlayer.catalog.load(videoReturned);
            })
            .catch(function(err){
              console.log('err:', err);
            });
        })();
      </script>

Utilisation de la simultanéité et de l'enregistrement

Si vous utilisez Concurrence de flux ou Enregistrement de l'appareil , votre lecteur Brightcove devra utiliser le GEM plug-in AU LIEU de la norme GDN brancher.

Suivez ces étapes :

  1. Ajouter le GEM plug-in à votre Brightcove Player. Le plugin a été mis à jour pour inclure persistentState.
  2. Dans Video Cloud Studio, accédez au Joueurs module. Sélectionnez un lien de joueur pour voir ses informations.
  3. Dans la navigation de gauche, sélectionnez Relecture.
  4. Sois sûr que Activer DRM n'est PAS sélectionné.

    Activer l'option DRM
    Activer l'option DRM
  5. Dans la navigation de gauche, sélectionnez JSON Editor.
  6. Dans le code JSON, recherchez le plugins array, et ajoutez le plugin EME comme suit :

    "plugins": [
      {
      "name": "eme",
      "scripts": [
        "//players.brightcove.net/videojs-drm/5.9.1/videojs-drm.min.js"
      ],
      "stylesheets": [
        "//players.brightcove.net/videojs-drm/5.9.1/videojs-drm.css"
      ],
      "options": {
        "keySystems": {
          "com.widevine.alpha": {
            "persistentState": "required"
          }
        }
      }
    },
  7. Incluez un jeton d'authentification JWT, tel que défini dans le Utilisation de la protection des clés de licence section.

Configuration des annonces côté serveur (SSAI)

Si vous utilisez la protection des clés de licence avec SSAI, vous devez inclure un paramètre supplémentaire à l'objet de paramètres de catalogue, nommé adConfigId.

<video-js id="myPlayerID"
  data-account="1507807800001"
  data-player="default"
  data-embed="default"
  controls
  data-application-id></video-js>
<script src="//players.brightcove.net/1507807800001/default_default/index.min.js"></script>

<script>
  (function() {
    var myPlayer = videojs.getPlayer('myPlayerID');

    myPlayer.catalog.get({
      type: 'video',
      id: '6015247091001',
      bcovAuthToken: 'your jwt token',
      adConfigId: 'your ad configuration id'
    })
      .then(function(videoReturned){
        myPlayer.catalog.load(videoReturned);
      })
      .catch(function(err){
        console.log('err:', err);
      });
  })();
</script>

Utilisation d'une implémentation personnalisée

Vous utilisez peut-être une implémentation personnalisée où vous n'avez pas le bcovAuthToken pour régler la valeur avec le catalogue.get() demande de méthode. Si vous utilisez votre propre lecteur ou un joueur tiers, vous pouvez utiliser l'une des approches suivantes pour transmettre votre jeton à la demande de licence :

  • En-tête HTTP : BCOV-Auth(Non pris en charge pour HLSE)
  • Cookie : bcov-auth(Non pris en charge pour HLSE)
  • Paramètre de requête : bcov-auth(Prise en charge uniquement pour HLSE) Doit être ajouté à l'URL du manifeste principal, au lieu de l'URL de la licence

Voici un exemple montrant comment définir l' source.emeHeaders['BCOV-Auth'] attribut de l'objet vidéo sur le jeton. Cette opération insère le emeHeader sur chaque source APRÈS la demande de catalogue.

<video-js id="myPlayerID"
  data-account="1507807800001"
  data-player="default"
  data-embed="default"
  controls
  data-application-id></video-js>
<script src="//players.brightcove.net/1507807800001/default_default/index.min.js"></script>

<script>
  (function() {
    var myPlayer = videojs.getPlayer('myPlayerID');

    myPlayer.catalog.get({
      type: 'video',
      id: '6015247091001'
    })
    .then(function(video){
      sources=video.sources;

      for (let i = 0; i < sources.length; i++) {
        const source = sources[i];

        // Only add the auth token as an eme header for DRM content
        if (your jwt token && source.key_systems) {
          source.emeHeaders = {
              'BCOV-Auth': your jwt token
            };
        }
      }
        myPlayer.catalog.load(video);
      })
      .catch(function(err){
        console.log('err:', err);
      });
  })();
</script>

Utilisation d'un chargeur de lecteur

Si vous utilisez un chargeur avec le lecteur Brightcove, vous pouvez toujours utiliser les restrictions de lecture.

React Player Loader

Pour utiliser le React Player Loader avec des restrictions de lecture, voir le document React Player Loader .