Uso de redundancia en vivo

Los grupos redundantes le permiten combinar 2 o más trabajos en vivo en una sola transmisión con conmutación por error automática para una reproducción confiable e ininterrumpida. Esta guía lo guiará para crear un grupo redundante, agregar trabajos y forzar una conmutación por error mediante la API en vivo.

Introducción

La función de redundancia de Brightcove Live ayuda a garantizar un rendimiento confiable para sus eventos en vivo mediante la creación de una transmisión de respaldo a la que Live se conectará automáticamente en caso de que la primera transmisión deje de funcionar.

Tenga en cuenta que todas las solicitudes a la API en vivo requieren los siguientes encabezados:

Encabezados de solicitud de API
Clave Valor Notas
X-API-KEY {your API Key} Su clave debería haber sido proporcionada cuando abrió su cuenta Brightcove Live
Content-Type aplicación / json Técnicamente, el content-type El encabezado solo es necesario para las solicitudes de escritura que incluyen un cuerpo de solicitud, pero no debería dañar las solicitudes de lectura.

Crea tus trabajos en vivo

Para la configuración redundante, deberá crear 2 o más Brightcove Live Jobs. El único requisito de los trabajos es que se creen con el mismo output ajustes. La forma más sencilla de lograrlo es crear un trabajo con las especificaciones de salida que desee y luego utilizar el copy_outputs_from_job parámetro para crear los trabajos adicionales.

No hay restricciones sobre las regiones en las que se pueden crear estos puestos de trabajo, sin embargo, se recomienda que estén ubicados relativamente cerca unos de otros.

Una vez que se hayan creado los trabajos en vivo, conserve las ID de trabajo para más adelante. El cuerpo de la solicitud que utilizará para agregar estos trabajos a un grupo redundante (consulte las secciones a continuación) se verá así:

    [
      {
        "job_id": "0b76bc73f92f46dc917bbe5061c0c633"
      },
      {
        "job_id": "0ae5a4a71dc54b3181af0f98ee407c27"
      }
    ]

Crea el grupo redundante

Para crear un grupo redundante, deberá enviar un POST solicitud de:

    https://api.bcovlive.io/v1/redundantgroups

Aquí hay un cuerpo de solicitud de muestra:

    {
      "ad_insertion": true,
      "processing_regions": ["us-west-2"],
      "storage_regions": ["us-west-2", "us-east-1"],
      "label": "Test RG",
      "live_dvr_sliding_window_duration": 1800
    }

La siguiente tabla contiene una lista completa de campos para el cuerpo de la solicitud. En varios casos, son idénticos a los campos utilizados para crear un trabajo en vivo. Ver el Referencia de API en vivo para obtener más detalles sobre los campos.

Crear campos de grupo redundantes
Campo Tipo ¿Requerido? Descripción
ad_insertion booleano opcional Establézcalo en verdadero si esta transmisión debe estar habilitada para SSAI
add_cdns gama opcional Matriz de proveedores de CDN adicionales que se utilizarán para la generación de manifiestos. Para cada CDN proporcionado, el manifiesto se antepondrá en consecuencia
drm objeto opcional Aún no es compatible
encryption objeto opcional Aún no es compatible
label cuerda requerido Una etiqueta para identificar al grupo
live_dvr_sliding_window_duration entero opcional
notifications gama opcional Matriz de cadenas o objetos de destino de notificación
processing_regions gama requerido Regiones de procesamiento para el grupo redundante. Esto determinará qué regiones de AWS generarán los manifiestos. Recomendado, esto coincide con storage_regions y las regiones en las que se crean los trabajos en vivo.
storage_regions gama requerido Las listas de reproducción y los fragmentos de medios de las regiones de almacenamiento se cargarán en S3. Se recomienda que coincida con Processing_regions y las regiones en las que se crean los trabajos en vivo.
videocloud objeto opcional Los clientes de Video Cloud tienen la opción de crear un video para usar en la transmisión en vivo.

La respuesta se verá así:

    {
      "id": "481ff4cf0bf74956bc2ec6e126588080",
      "processing_regions": [
          {
              "region": "us-west-2",
              "probability": 1
          }
      ],
      "storage_regions": [
          "us-west-2",
          "us-east-1"
      ],
      "jobs": [],
      "state": "standby",
      "label": "Test RG",
      "live_dvr_sliding_window_duration": 1800,
      "status": {
          "us-west-2": null
      },
      "ad_insertion": true,
      "outputs": {
          "playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8",
          "playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8",
          "ssai_playback_urls": {
              "26f8470f61374e608e27af9c1b3f7ff0": {
                  "playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8",
                  "playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8",
                  "description": "House Ads - 864b84f712ae40bca1510a8052b34312",
                  "type": "ads"
              }
      }
    }

Obtén grupos redundantes

Puede obtener todos los grupos redundantes enviando un GET solicitud de:

https://api.bcovlive.io/v1/redundantgroups

Puede filtrar la respuesta utilizando el state param. Los valores permitidos son:

  • cancelled
  • cancelling
  • deleting
  • disconnected
  • failed
  • finished
  • finishing
  • processing
  • standby
  • waiting

También hay una page_size parámetro que se puede establecer en un número entero hasta 1000. El valor por defecto page_size es 10.

La respuesta se verá así:

{
  "redundant_groups": [
    {
      "id": "91c268a6ec5240d79a6004f4ccf0dc6f",
      "account_id": "a95ac581551b4478b27910e5675db1f8",
      "user_id": "c2691d4d039040be96c190a949d754a7",
      "processing_regions": [
        {
          "region": "us-west-2",
          "probability": 1
        }
      ],
      "storage_regions": [
        "us-west-2",
        "us-east-1"
      ],
      "jobs": [],
      "state": "standby",
      "created_at": 1594316624287,
      "updated_at": 1594316624287,
      "label": "Test Redundant Group",
      "live_dvr_sliding_window_duration": 86400,
      "status": {
        "us-west-2": null
      },
      "outputs": {
        "playback_url": "https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist.m3u8",
        "playback_url_dvr": "https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist_dvr.m3u8"
      }
    },
    {
      "id": "279ac36e4b4d48a3abbd3e1f98cd57aa",
      "account_id": "a95ac581551b4478b27910e5675db1f8",
      "user_id": "c2691d4d039040be96c190a949d754a7",
      "processing_regions": [
        {
          "region": "us-west-2",
          "probability": 1
        }
      ],
      "storage_regions": [
        "us-west-2",
        "us-east-1"
      ],
      "jobs": [],
      "state": "standby",
      "created_at": 1594323207015,
      "updated_at": 1594323207015,
      "label": "Test Redundant Group2",
      "live_dvr_sliding_window_duration": 86400,
      "status": {
        "us-west-2": null
      },
      "outputs": {
        "playback_url": "https://bcovlive-a.akamaihd.net/r279ac36e4b4d48a3abbd3e1f98cd57aa/us-west-2/NA/playlist.m3u8",
        "playback_url_dvr": "https://bcovlive-a.akamaihd.net/r279ac36e4b4d48a3abbd3e1f98cd57aa/us-west-2/NA/playlist_dvr.m3u8"
      }
    }
  ]
}

Agregar trabajos en vivo al grupo redundante

Una vez que haya creado un grupo redundante, puede agregarle trabajos enviando un POST solicitud de:

    https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/jobs

Los ID del trabajo en vivo se especifican en el cuerpo de la solicitud de esta manera:

    [
      {
        "job_id": "0b76bc73f92f46dc917bbe5061c0c633"
      },
      {
        "job_id": "0ae5a4a71dc54b3181af0f98ee407c27"
      }
    ]

Hay un par de propiedades opcionales adicionales para los objetos de trabajo; la siguiente tabla muestra todos los campos:

Agregar campos de solicitud de trabajos en vivo
Campo Tipo ¿Requerido? Descripción
job_id cuerda requerido ID del trabajo para agregar al grupo. Si ninguno playlist o streams están especificados, todos outputs se utilizará.
playlist cuerda opcional Etiqueta de la lista de reproducción que se utilizará como salidas de la transmisión. Si playlist se define, streams deber ser indefinido.
streams gama opcional Lista de etiquetas de transmisión que se utilizarán como salidas de la transmisión. Si streams se define, playlist deber ser indefinido.

La respuesta exitosa para esta solicitud solo devolverá el ID de grupo redundante.

Obtener estado de grupo redundante

Puede obtener el estado de un grupo redundante enviando un GET solicitud de:

    https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}

La respuesta tendrá el siguiente aspecto:

    {
      "id": "481ff4cf0bf74956bc2ec6e126588080",
      "processing_regions": [
          {
              "region": "us-west-2",
              "probability": 1
          }
      ],
      "storage_regions": [
          "us-west-2",
          "us-east-1"
      ],
      "jobs": [
          {
              "job_id": "0b76bc73f92f46dc917bbe5061c0c633",
              "streams": [
                  "hls720p",
                  "hls540p",
                  "hls360p"
              ],
              "state": "processing"
          },
          {
              "job_id": "0ae5a4a71dc54b3181af0f98ee407c27",
              "streams": [
                  "hls720p",
                  "hls540p",
                  "hls360p"
              ],
              "state": "processing"
          }
      ],
      "state": "processing",
      "created_at": 1568057414849,
      "updated_at": 1568059153017,
      "label": "Test RG",
      "live_dvr_sliding_window_duration": 1800,
      "status": {
          "us-west-2": {
              "SwitchDrift": 0,
              "Ended": false,
              "OnAir": "0b76bc73f92f46dc917bbe5061c0c633",
              "Mode": "auto",
              "InManifest": true,
              "MediaSequence": 10,
              "Healthiness": 0,
              "Duration": 4,
              "DiscontinuitySequence": 1,
              "SourceChunk": {
                  "MediaSequence": 3639,
                  "Duration": 4,
                  "DiscontinuitySequence": 0,
                  "ProgramDateTime": "2019-09-09T19:59:36Z",
                  "LiveJobID": "0b76bc73f92f46dc917bbe5061c0c633"
              },
              "UpdatedAt": "2019-09-09T19:59:46Z",
              "ProgramDateTime": "2019-09-09T19:59:36Z"
          }
      },
      "ad_insertion": true,
      "outputs": {
          "playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8",
          "playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8",
          "ssai_playback_urls": {
              "26f8470f61374e608e27af9c1b3f7ff0": {
                  "playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8",
                  "playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8",
                  "description": "House Ads - 864b84f712ae40bca1510a8052b34312",
                  "type": "ads"
              }
          }
      }
    }

Cada región de procesamiento en el grupo redundante tendrá su propia status objeto, codificado por región. Puedes ver en este ejemplo que en el us_west_2 región de procesamiento, la on_air trabajo es 0b76bc73f92f46dc917bbe5061c0c633.

Como nota al margen, los probability asociados con la región de procesamiento siempre lo estarán 1, pero se incluirán en el modelo de datos para el futuro. mejoras que permitirán varias regiones de procesamiento con probabilidades entre 0 y 1, que representan el porcentaje aproximado de tráfico de reproducción que utilizará esa región.

Agregar puntos de referencia manualmente

Agregar puntos de referencia manualmente a una transmisión en vivo con redundancia es muy similar a agregar puntos de referencia a una transmisión en vivo normal. Para hacer esto para un grupo redundante, haga un POST solicitud de:

    https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/cuepoint

Incluya un cuerpo de solicitud como el siguiente:

    {
      "ad_server_data": {
        "subject": "wildlife"
      },
      "duration": 30,
      "timecode": "09:23:18:05"
    }

Si omite el timecode campo, el punto de referencia se insertará inmediatamente.

Forzar una conmutación por error de trabajo

La conmutación por error será administrada automáticamente por el sistema Brightcove Live y no debería requerir ninguna intervención de su parte. Sin embargo, si por alguna razón desea forzar la conmutación por error a otro trabajo, la forma más sencilla de hacerlo es simplemente detener el codificador del on_air trabajo.

También puede forzar la conmutación por error utilizando la API haciendo un PUT solicitud de:

    https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/switch

El cuerpo de la solicitud tiene este aspecto:

    {
      "mode": "manual",
      "on_air": "0ae5a4a71dc54b3181af0f98ee407c27"
    }

Aquí, mode será cualquiera manual o auto (el predeterminado), y el on_air tendrá un valor de uno de los secundario ID de trabajo.

Nota: Una vez en manual modo, la conmutación por error automática del trabajo no ocurrir. Tú deber volver a establecer el modo en auto para que se reanude la conmutación por error automática. Puede cambiar el trabajo en el aire sin cambiar a manual omitiendo el modo en el cuerpo y agregando el parámetro de consulta de fuerza ?force=true a su solicitud. Esto obligará al servicio a cambiar de trabajo, pero puede volver a hacerlo en cualquier momento si detecta problemas.

Finalizar una transmisión redundante

Hay dos formas de finalizar la transmisión redundante. Por diseño, los grupos redundantes están implícitamente SEP arroyos. Puede poner un grupo redundante en STANDBY modo eliminando todos los trabajos del grupo redundante.

Para hacer esto usando un DELETE solicitud de:

    https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/jobs/{job_id}

para cada trabajo que desee eliminar. Tenga en cuenta que para eliminar el trabajo que se encuentra actualmente on_air, tendrá que agregar el parámetro de ?force=true consulta.

La segunda forma de finalizar la transmisión es eliminar el grupo redundante por completo enviando un DELETE solicitud de:

    https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}

Limitaciones

  • Redundancia en vivo no puedo utilizarse con transmisiones en vivo protegidas por DRM.