Restricciones de reproducción con transmisiones en vivo

En este tema, aprenderá a usar las restricciones de reproducción con transmisiones en vivo.

Introducción

Las restricciones de reproducción se pueden habilitar para un trabajo en vivo para ampliar las protecciones proporcionadas por el cifrado DRM y/o AES-128, que incluyen:

  • Limitar la reproducción a un agente de usuario en particular
  • Limitar la cantidad de direcciones IP
  • limitando el total de usuarios

Para obtener un conjunto completo de restricciones, puede configurarlas mediante la API de derechos de reproducción. En este caso, asociaría el playback_rights_id con un video. Para obtener más detalles, consulte la Restricciones a nivel de activos sección de la descripción general: Documento de restricciones de reproducción de Brightcove.

Para las restricciones de tiempo de ejecución, puede especificar las reclamaciones de JSON Web Token (JWT). Estas restricciones incluyen la simultaneidad de la transmisión y los límites del dispositivo. Para obtener más detalles, consulte la Restricciones de tiempo de ejecución sección de la descripción general: Documento de restricciones de reproducción de Brightcove.

Con las transmisiones en vivo, también puede anular el DRM CRT de un usuario. Para obtener más detalles, consulte la Protección de claves de licencia sección de la descripción general: Documento de restricciones de reproducción de Brightcove.

Independientemente del modo que elija, la solicitud de trabajo debe incluir un videocloud.video atributo para que se cree un video de Video Cloud y se vincule al trabajo en vivo. La playback_rights_id El atributo se puede actualizar en el video de Video Cloud para cambiar las restricciones de reproducción a través del API de CMS.

También necesitará crear un token web JSON (JWT) con los reclamos correspondientes. El JWT deberá incluirse en cualquier solicitud del servidor de licencias. Si está implementando su propio reproductor, deberá pasar este valor en un BCOV-Auth encabezado o bcov_auth parámetro de consulta (además del token DRM).

Cree un trabajo en vivo usando Studio

Puede crear un trabajo en vivo que utilice restricciones de reproducción en Video Cloud Studio.

  1. Revise los detalles para crear transmisiones en vivo en el Cree una transmisión en vivo con la API en vivo de Brightcove documento.
  2. En Studio, cuando cree su evento en vivo, expanda el Opciones avanzadas sección.

  3. Para Cifrado de contenido , seleccione:

    • AES-128
    • Gestión de derechos digitales (DRM)
    AES-128 cifrado
    AES-128 cifrado

    Para más detalles, consulte el Configuración de opciones avanzadas sección de la Crear y administrar eventos en vivo usando el módulo en vivo documento.

  4. Para extender las protecciones de reproducción, marque la casilla para Habilitar restricciones de reproducción.

    Habilitar restricciones de reproducción
    Habilitar restricciones de reproducción

    La solicitud de trabajo debe incluir una videocloud.video atributo para que se cree un video de Brightcove y se vincule al trabajo en vivo. La playback_rights_id El atributo se puede actualizar en el video de Video Cloud para cambiar las restricciones de reproducción a través del API de CMS.

Cree un trabajo en vivo usando la API en vivo

Puede crear un trabajo en vivo que utilice restricciones de reproducción utilizando Brightcove Live API.

  1. Revise los detalles para crear transmisiones en vivo en el Crear y administrar eventos en vivo usando el módulo en vivo documento.
  2. Revise los nuevos campos utilizados para agregar restricciones de reproducción a un trabajo en vivo:

    • drm objeto:

      require_playback_token(booleano)
      Se requerirá la autenticación de reproducción JWT al solicitar la licencia.
      check_playback_rights(booleano)
      Se requerirá la autenticación de reproducción JWT al solicitar la licencia. Utiliza la identificación de los derechos de reproducción asociados con el video o JWT para hacer cumplir las restricciones.
    • videocloud.video objeto:

      playback_rights_id(cadena)
      Asocia restricciones de reproducción especificadas con un video.
  3. Cree un trabajo en vivo usando el API en vivo de Brightcove.

    Ejemplo de solicitud y respuesta

    A continuación, se muestra un cuerpo de solicitud de API en vivo de muestra para crear un trabajo en vivo con restricciones de reproducción.

    Cuerpo de solicitud de muestra

    {
      "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
      }
    }

    Respuesta de muestra

    La línea resaltada contiene el video. id que necesitas agregar el 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
      }
    }

Agregar restricciones al trabajo en vivo

Después de crear la transmisión en vivo, puede agregar restricciones de reproducción al video creado para el trabajo en vivo usando el API de CMS.

Solicitud de API de CMS

Para agregar la identificación de los derechos de reproducción al video, envíe un Actualizar video solicitud a la API de CMS con el siguiente cuerpo de solicitud:

{
	"playback_rights_id": "your playback_rights_id"
}

Entrega la corriente

Si está utilizando el reproductor web de Brightcove o uno de los SDK de reproductores nativos de Brightcove para transmitir la transmisión en vivo, la implementación de las restricciones de reproducción es la misma que la de VOD. Vea lo siguiente: