Restrictions de lecture avec les diffusions en direct

Dans cette rubrique, vous apprendrez à utiliser les restrictions de lecture avec les diffusions en direct.

Introduction

Les restrictions de lecture peuvent être activées pour une tâche en direct afin d'étendre les protections fournies par le DRM et/ou le cryptage AES-128, notamment :

  • Limiter la lecture à un agent utilisateur particulier
  • Limiter le nombre d'adresses IP
  • limiter le nombre total d'utilisateurs

Pour un ensemble complet de restrictions, vous pouvez les configurer à l'aide de l'API des droits de lecture. Dans ce cas, vous associeriez le playback_rights_id avec une vidéo. Pour plus de détails, reportez-vous à la section Restrictions au niveau des actifs de la présentation : Document sur les restrictions de lecture Brightcove.

Pour les restrictions d'exécution, vous pouvez spécifier les revendications JSON Web Token (JWT). Ces restrictions incluent la simultanéité de flux et les limites d'appareils. Pour plus de détails, consultez le Restrictions d'exécution section de l'aperçu : Document sur les restrictions de lecture Brightcove.

Avec les flux en direct, vous pouvez également remplacer le DRM CRT pour un utilisateur. Pour plus de détails, consultez le Protection des clés de licence section de l'aperçu : Document sur les restrictions de lecture Brightcove.

Quel que soit le mode que vous choisissez, la demande de travail doit inclure un videocloud.video attribut pour qu'une vidéo Video Cloud soit créée et liée à la tâche en direct. Les playback_rights_id L'attribut peut être mis à jour sur la vidéo Video Cloud pour modifier les restrictions de lecture via le API CMS.

Vous devrez également créer un jeton Web JSON (JWT) avec les réclamations appropriées. Le JWT devra être inclus dans toutes les demandes de serveur de licences. Si vous implémentez votre propre lecteur, vous devrez passer cette valeur soit dans un BCOV-Auth en-tête ou bcov_auth paramètre de requête (en plus du jeton DRM).

Créer un travail en direct à l'aide de Studio

Vous pouvez créer une tâche en direct qui utilise les restrictions de lecture dans Video Cloud Studio.

  1. Examinez les détails de la création de flux en direct dans le Créer un flux en direct à l'aide de l'API Brightcove Live document.
  2. Dans Studio, lorsque vous créez votre événement en direct, développez la Options avancées section.

  3. Pour le cryptage du contenu, sélectionnez l'une des options suivantes

    • AES-128
    • Gestion des droits numériques (DRM)
    AES-128 chiffrement
    AES-128 chiffrement

    Pour plus de détails, consultez le Configuration des options avancées partie de la Création et gestion d'événements en direct à l'aide du module Live document.

  4. Pour étendre les protections de lecture, cochez la case Activer les restrictions de lecture.

    Activer les restrictions de lecture
    Activer les restrictions de lecture

    La demande d'emploi doit inclure un videocloud.video attribut afin qu'une vidéo Video Cloud soit créée et liée à la tâche en direct. Les playback_rights_id L'attribut peut être mis à jour sur la vidéo Video Cloud pour modifier les restrictions de lecture via le API CMS.

Créer un job Live à l'aide de l'API Live

Vous pouvez créer une tâche en direct qui utilise des restrictions de lecture à l'aide de l'API Live de Brightcove.

  1. Examinez les détails de la création de flux en direct dans le Création et gestion d'événements en direct à l'aide du module Live document.
  2. Passez en revue les nouveaux champs utilisés pour ajouter des restrictions de lecture à une tâche en direct :

    • drm objet :

      require_playback_token(booléen)
      L'autorisation de lecture JWT sera requise lors de la demande de licence.
      check_playback_rights(booléen)
      L'autorisation de lecture JWT sera requise lors de la demande de licence. Utilise l'identifiant des droits de lecture associé à la vidéo ou au JWT pour appliquer les restrictions.
    • videocloud.video objet :

      playback_rights_id(chaîne)
      Associe les restrictions de lecture spécifiées à une vidéo.
  3. Créez une tâche en direct à l'aide de l' API Live de Brightcove.

    Exemple de demande et de réponse

    Vous trouverez ci-dessous un exemple de corps de demande d'API Live pour la création d'une tâche Live avec des restrictions de lecture.

    Exemple de corps de requête

    {
      "live_stream": true,
      "region": "us-west-2",
      "reconnect_time": 300,
      "ad_insertion": false,
      "static": false,
      "drm": {
        "modes":["all"],
        "require_playback_token": true,
        "check_playback_rights": true
      },
      "encryption": {
        "check_playback_rights": true,
        "method": "aes-128",
        "type": "internal",
        "key": "24432646294A404E635266556A586E32"
      },
      "live_dvr_sliding_window_duration": 300,
      "videocloud": {
        "live_to_vod": true,
        "video": {
            "name": "Test EPA",
            "description": "",
            "long_description": "",
            "tags": [],
            "reference_id": "",
            "link": {
                "url": "",
                "text": ""
            },
            "custom_fields": {}
          }
      },  
      "outputs": [{
          "label": "hls720p",
          "live_stream": true,
          "height": 720,
          "video_bitrate": 2000,
          "segment_seconds": 6,
          "keyframe_interval": 60
      },
      {
          "label": "hls480p",
          "live_stream": true,
          "height": 480,
          "video_bitrate": 1000,
          "segment_seconds": 6,
          "keyframe_interval": 60
      }
    }

    Exemple de réponse

    La ligne en surbrillance contient la vidéo id que vous devez ajouter le playback_rights_id

    {
      "id": "f47487cf81f84764b280fbfaefed524a",
      "outputs": [
          {
              "id": "0-f47487cf81f84764b280fbfaefed524a",
              "label": "hls720p"
          },
          {
              "id": "1-f47487cf81f84764b280fbfaefed524a",
              "label": "hls480p"
          },
          {
              "id": "2-f47487cf81f84764b280fbfaefed524a",
              "playlist_type": "defaultS3",
              "type": "playlist",
              "drm": {
                  "token": "eyJh...axy8",
                  "modes": [
                      {
                          "type": "fairplay",
                          "key_system": "com.apple.fps.1_0",
                          "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/fp?token=eyJh...axy8",
                          "certificate_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/cert/fp?token=eyJh...axy8",
                          "filename": "playlist_fp.m3u8",
                          "dvr_filename": "playlist_fp_dvr.m3u8",
                          "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp.m3u8",
                          "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp_dvr.m3u8",
                          "playback_added_cdns": []
                      },
                      {
                          "type": "widevine",
                          "key_system": "com.widevine.alpha",
                          "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/wv?token=eyJh...axy8",
                          "filename": "playlist_wv.m3u8",
                          "dvr_filename": "playlist_wv_dvr.m3u8",
                          "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv.m3u8",
                          "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv_dvr.m3u8",
                          "playback_added_cdns": []
                      },
                      {
                          "type": "playready",
                          "key_system": "com.microsoft.playready",
                          "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/pr?token=eyJh...axy8",
                          "filename": "playlist.mpd",
                          "dvr_filename": "playlist_dvr.mpd",
                          "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist.mpd",
                          "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_dvr.mpd",
                          "playback_added_cdns": []
                      }
                  ],
                  "token_expires_in": 43200,
                  "require_playback_token": true,
                  "check_playback_rights": true
              }
          }
      ],
      "stream_url": "rtmp://ep8-usw2.a-live.io:1935/f47487cf81f84764b280fbfaefed524a",
      "stream_name": "alive",
      "static": false,
      "event_length": 93600,
      "job_videocloud_asset_id": "70701312966202",
      "encryption": {},
      "drm_enabled": true,
      "drm": {
        "token": "eyJh...axy8",
        "modes": [
          {
            "type": "fairplay",
            "key_system": "com.apple.fps.1_0",
            "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/fp?token=eyJhb...axy8",
            "certificate_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/cert/fp?token=eyJhb...axy8",
            "filename": "playlist_fp.m3u8",
            "dvr_filename": "playlist_fp_dvr.m3u8",
            "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp.m3u8",
            "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp_dvr.m3u8",
            "playback_added_cdns": []
          },
          {
            "type": "widevine",
            "key_system": "com.widevine.alpha",
            "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/wv?token=eyJhb...axy8",
            "filename": "playlist_wv.m3u8",
            "dvr_filename": "playlist_wv_dvr.m3u8",
            "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv.m3u8",
            "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv_dvr.m3u8",
            "playback_added_cdns": []
          },
          {
            "type": "playready",
            "key_system": "com.microsoft.playready",
            "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/pr?token=eyJh...axy8",
            "filename": "playlist.mpd",
            "dvr_filename": "playlist_dvr.mpd",
            "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist.mpd",
            "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_dvr.mpd",
            "playback_added_cdns": []
          }
        ],
        "token_expires_in": 43200,
        "require_playback_token": true,
        "check_playback_rights": true
      }
    }

Ajouter des restrictions au travail en direct

Après avoir créé le flux en direct, vous pouvez ajouter des restrictions de lecture à la vidéo créée pour le travail en direct à l'aide de la API CMS.

Demande d'API CMS

Pour ajouter l'identifiant des droits de lecture à la vidéo, envoyez un Mettre à jour la vidéo requête à l'API CMS avec le corps de requête suivant :

{
	"playback_rights_id": "your playback_rights_id"
}

Livrer le flux

Si vous utilisez le lecteur Web Brightcove ou l'un des SDK de lecteur natif Brightcove pour diffuser le flux en direct, la mise en œuvre des restrictions de lecture est la même que pour la VOD. Voir ce qui suit :