Utilisation de la redondance en direct

Les groupes redondants vous permettent de combiner au moins deux Live Jobs en un seul flux avec basculement automatique pour une lecture fiable et ininterrompue. Ce guide vous guidera à travers la création d'un groupe redondant, l'ajout de tâches et le forçage d'un basculement à l'aide de l'API Live.

Introduction

La fonction de redondance de Brightcove Live permet de garantir des performances fiables pour vos événements en direct en créant un flux de secours sur lequel Live basculera automatiquement en cas d'arrêt du premier flux.

Notez que toutes les requêtes à l'API Live nécessitent les en-têtes suivants :

En-têtes de requête API
Clé Montant Remarques
X-API-KEY {votre clé API} Votre clé doit avoir été fournie lorsque vous avez ouvert votre compte Brightcove Live
Content-Type application/json Techniquement, le content-type L'en-tête n'est requis que pour les requêtes d'écriture qui incluent un corps de requête, mais ne devrait pas nuire aux requêtes de lecture.

Créez vos emplois en direct

Pour la configuration redondante, vous devrez créer au moins 2 travaux Brightcove Live. La seule exigence des Jobs est qu'ils soient créés avec le même output Les paramètres. Le moyen le plus simple d'y parvenir est de créer un travail avec les spécifications de sortie souhaitées, puis d'utiliser le copy_outputs_from_job paramètre pour créer les tâches supplémentaires.

Il n'y a aucune restriction sur les régions dans lesquelles ces emplois peuvent être créés, cependant, il est recommandé qu'ils soient situés relativement proches les uns des autres.

Une fois les tâches en direct créées, conservez les ID de tâche pour plus tard. Le corps de la requête que vous utiliserez pour ajouter ces travaux à un groupe redondant (voir les sections ci-dessous) ressemblera à ceci :

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

Créer le groupe redondant

Pour créer un groupe redondant, vous devez envoyer une POST demande à :

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

Voici un exemple de corps de requête :

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

Le tableau ci-dessous contient une liste complète des champs pour le corps de la demande. Dans plusieurs cas, ceux-ci sont identiques aux champs utilisés pour créer un travail réel. Voir le Référence de l'API en direct pour plus de détails sur les champs.

Créer des champs de groupe redondants
Champ Type Obligatoire ? Description
ad_insertion booléen optionnel Définir sur true si ce flux doit être activé pour SSAI
add_cdns déployer optionnel Tableau de fournisseurs CDN supplémentaires à utiliser pour la génération de manifeste. Pour chaque CDN fourni, le manifeste sera préfixé en conséquence
drm objet optionnel Pas encore pris en charge
encryption objet optionnel Pas encore pris en charge
label chaîne obligatoire Une étiquette pour identifier le groupe
live_dvr_sliding_window_duration entier optionnel
notifications déployer optionnel Tableau d'objets ou de chaînes de destination de notification
processing_regions déployer obligatoire Régions de traitement pour le groupe redondant. Cela déterminera quelles régions AWS généreront les manifestes. Recommandé que cela corresponde à storage_regions et aux régions dans lesquelles les tâches en direct sont créées.
storage_regions déployer obligatoire Les morceaux de médias et les listes de lecture des régions de stockage seront téléchargés dans S3. Il est recommandé que cela corresponde à processing_regions et aux régions dans lesquelles les tâches en direct sont créées.
videocloud objet optionnel Les clients de Video Cloud ont la possibilité de créer une vidéo à utiliser pour la diffusion en direct.

La réponse ressemblera à ceci :

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

Obtenez des groupes redondants

Vous pouvez obtenir tous les groupes redondants en soumettant une GET demande à :

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

Vous pouvez filtrer la réponse en utilisant le state param. Les valeurs autorisées sont les suivantes :

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

Il y a aussi page_size paramètre qui peut être défini sur un nombre entier jusqu'à 1000. Le défaut page_size est de 10.

La réponse ressemblera à ceci :

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

Ajouter des tâches en direct au groupe redondant

Après avoir créé un groupe redondant, vous pouvez y ajouter des tâches en envoyant une POST demande à :

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

Les identifiants de tâche en direct sont spécifiés dans le corps de la requête comme ceci :

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

Il existe quelques propriétés facultatives supplémentaires pour les objets de travail. Le tableau suivant présente tous les champs :

Ajouter des champs de demande de travaux en direct
Champ Type Obligatoire ? Description
job_id chaîne obligatoire ID du travail à ajouter au groupe. Si ni l'un ni l'autre playlist ou streams sont spécifiés, tous outputs sera utilisé.
playlist chaîne optionnel Libellé de la liste de lecture à utiliser comme sorties pour le flux. Si playlist est défini, streams doit être indéfini.
streams déployer optionnel Liste des étiquettes de flux à utiliser comme sorties pour le flux. Si streams est défini, playlist doit être indéfini.

La réponse de succès pour cette demande renverra simplement l'ID de groupe redondant.

Obtenir le statut de groupe redondant

Vous pouvez obtenir le statut d'un groupe redondant en soumettant une GET demande à :

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

La réponse ressemblera à ce qui suit :

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

Chaque région de traitement du groupe redondant aura sa propre status objet, codé par région. Vous pouvez voir dans cet exemple que dans le us_west_2 région de transformation, la on_air le travail est 0b76bc73f92f46dc917bbe5061c0c633.

En guise de note, la zone probability associée à la zone de traitement sera toujours à ce stade 1, mais elle est incluse dans le modèle de données pour l'avenir. améliorations qui autoriseront plusieurs régions de traitement avec des probabilités comprises entre 0 et 1, ce qui représente le pourcentage approximatif du trafic de lecture qui utilisera cette région.

Ajout manuel de points de repère

L'ajout manuel de points de repère à un flux en direct avec redondance est très similaire à l'ajout de points de repère à un flux en direct ordinaire. Pour ce faire pour un groupe redondant, envoyez une POST demande à :

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

Incluez un corps de requête comme celui-ci :

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

Si vous omettez le timecode champ, le point de repère sera inséré immédiatement.

Forcer un basculement de tâche

Le basculement sera géré automatiquement par le système Brightcove Live et ne devrait nécessiter aucune intervention de votre part. Si, pour une raison quelconque, vous souhaitez forcer le basculement vers une autre tâche, le moyen le plus simple de le faire est d'arrêter simplement l'encodeur du on_air travail.

Vous pouvez également forcer le basculement à l'aide de l'API en adressant une PUT demande à :

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

Le corps de la requête ressemble à ceci :

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

Ici, mode sera soit manual ou auto (la valeur par défaut) et le on_air aura une valeur de l'un des secondaire identifiants de travail.

Remarque : Une fois dans manual mode, le basculement automatique des tâches ne pas se produire. Tu doit remettre le mode sur auto pour que le basculement automatique reprenne. Vous pouvez modifier le travail à l'antenne sans passer en mode manuel en omettant le mode du corps et en ajoutant le paramètre de requête de force ?force=true à votre demande. Cela forcera le service à changer de tâche, mais il peut revenir à tout moment s'il détecte des problèmes.

Mettre fin à un flux redondant

Il existe deux manières de mettre fin à votre flux redondant. De par leur conception, les groupes redondants sont implicitement SEP ruisseaux. Vous pouvez mettre un groupe redondant dans STANDBY en supprimant tous les Jobs du Groupe redondant.

Pour ce faire, envoyez une DELETE demande à :

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

pour chaque tâche que vous souhaitez supprimer. Notez que pour supprimer la tâche en cours on_air, vous devrez ajouter le paramètre de ?force=true requête.

La deuxième méthode pour terminer le flux consiste à supprimer complètement le groupe redondant en envoyant une DELETE demande à :

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

Contraintes

  • Redondance en direct ne peut pas être utilisé avec des flux en direct protégés par DRM.