Live-Redundanz verwenden

Redundante Gruppen ermöglichen die Kombination von 2 oder mehr Live-Aufträgen zu einem einzigen Stream mit automatischem Failover für eine ununterbrochene, zuverlässige Wiedergabe. Dieser Leitfaden führt Sie durch das Erstellen einer redundanten Gruppe, das Hinzufügen von Jobs und das Erzwingen eines Failovers mithilfe der Live-API.

Einleitung

Die Redundanzfunktion von Brightcove Live trägt dazu bei, eine zuverlässige Leistung für Ihre Live-Events zu gewährleisten, indem ein Backup-Stream erstellt wird, auf den Live automatisch umschaltet, wenn der erste Stream nicht mehr funktioniert.

Beachten Sie, dass alle Anfragen an die Live-API die folgenden Header erfordern:

API-Anforderungsheader
Taste Wert Hinweise
X-API-KEY {Ihr API-Schlüssel} Ihr Schlüssel sollte bei der Eröffnung Ihres Brightcove Live-Kontos bereitgestellt worden sein
Content-Type anwendung/json Technisch gesehen ist das content-type Header ist nur für Schreibanforderungen erforderlich, die einen Anforderungstext enthalten, sollte jedoch bei Leseanforderungen keinen Schaden anrichten.

Erstellen Sie Ihre Live-Jobs

Für das redundante Setup müssen Sie 2 oder mehr Brightcove Live Jobs erstellen. Die einzige Voraussetzung für die Jobs ist, dass sie mit den gleichen output Einstellungen erstellt werden. Am einfachsten erreichen Sie dies, indem Sie einen Job mit den gewünschten Ausgabespezifikationen erstellen und dann die copy_outputs_from_job Parameter, um die zusätzlichen Jobs zu erstellen.

Es gibt keine Beschränkung in Bezug auf die Regionen, in denen diese Arbeitsplätze geschaffen werden können, es wird jedoch empfohlen, dass sie relativ nahe beieinander liegen.

Nachdem die Live-Jobs erstellt wurden, bewahren Sie die Job-IDs für später auf. Der Anforderungstext, den Sie verwenden, um diese Jobs zu einer redundanten Gruppe hinzuzufügen (siehe die Abschnitte unten), sieht wie folgt aus:

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

Erstellen Sie die redundante Gruppe

Um eine redundante Gruppe zu erstellen, senden Sie eine POST Anfrage zu:

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

Hier ist ein Beispiel für den Anfragetext:

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

Die folgende Tabelle enthält eine vollständige Liste der Felder für den Anforderungstext. In einigen Fällen sind diese mit Feldern identisch, die zum Erstellen eines Live-Jobs verwendet werden. Siehe die Live-API-Referenz für weitere Details zu den Feldern.

Redundante Gruppenfelder erstellen
Feld Typ Erforderlich? Beschreibung
ad_insertion boolescher Wert fakultativ Auf "true" setzen, wenn dieser Stream SSAI-aktiviert sein soll
add_cdns Reihe fakultativ Array mit zusätzlichen CDN-Anbietern, die für die Manifestgenerierung verwendet werden sollen. Für jedes bereitgestellte CDN wird das Manifest entsprechend vorangestellt
drm Objekt fakultativ Noch nicht unterstützt
encryption Objekt fakultativ Noch nicht unterstützt
label Schnur erforderlich Ein Label zur Identifizierung der Gruppe
live_dvr_sliding_window_duration ganze Zahl fakultativ
notifications Reihe fakultativ Array von Benachrichtigungszielobjekten oder -zeichenfolgen
processing_regions Reihe erforderlich Verarbeitungsregionen für die Redundante Gruppe. Dadurch wird bestimmt, welche AWS-Regionen die Manifeste generieren. Empfohlen entspricht dies storage_regions und den Regionen, in denen die Live-Jobs erstellt werden.
storage_regions Reihe erforderlich In Speicherregionen werden Medienblöcke und Playlisten in S3 hochgeladen. Empfohlen entspricht dies Processing_regions und den Regionen, in denen die Live-Jobs erstellt werden.
videocloud Objekt fakultativ Video Cloud-Kunden haben die Möglichkeit, ein Video für den Livestream zu erstellen.

Die Antwort wird ungefähr so aussehen:

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

Holen Sie sich redundante Gruppen

Sie können alle redundanten Gruppen erhalten, indem Sie a GET Anfrage zu:

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

Sie können die Antwort filtern, indem Sie die state Param. Die zulässigen Werte sind:

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

Da ist auch ein page_size Parameter, der auf eine ganze Zahl bis 1000 gesetzt werden kann. Der Standard page_size ist 10.

Die Antwort wird wie folgt aussehen:

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

Fügen Sie der redundanten Gruppe Live-Jobs hinzu

Nachdem Sie eine redundante Gruppe erstellt haben, können Sie ihr Jobs hinzufügen, indem Sie a POST Anfrage zu:

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

Die Live-Job-IDs werden im Anfragetext wie folgt angegeben:

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

Es gibt einige zusätzliche optionale Eigenschaften für die Job-Objekte – die folgende Tabelle zeigt alle Felder:

Felder für die Anforderung von Live-Jobs hinzufügen
Feld Typ Erforderlich? Beschreibung
job_id Schnur erforderlich ID des Jobs, der zur Gruppe hinzugefügt werden soll. Wenn weder playlist oder streams angegeben sind, alle outputs verwendet werden.
playlist Schnur fakultativ Label der Playlist, die als Ausgabe für den Stream verwendet werden soll. Wenn playlist ist definiert, streams Muss Sein nicht definiert.
streams Reihe fakultativ Liste der Stream-Labels, die als Ausgaben für den Stream verwendet werden sollen. Wenn streams ist definiert, playlist Muss Sein nicht definiert.

Die Erfolgsantwort für diese Anforderung gibt nur die redundante Gruppen-ID zurück.

Status der redundanten Gruppe abrufen

Sie können den Status einer redundanten Gruppe abrufen, indem Sie a GET Anfrage zu:

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

Die Antwort sieht wie folgt aus:

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

Jede Verarbeitungsregion in der Redundant Group hat ihre eigene status Objekt, codiert nach Region. Sie können in diesem Beispiel sehen, dass in der us_west_2 Verarbeitungsregion, die on_air Zu tun ist 0b76bc73f92f46dc917bbe5061c0c633.

Als Randnotiz wird der mit dem Verarbeitungsbereich probability verknüpfte Bereich an dieser Stelle immer sein 1, wird aber für die Zukunft im Datenmodell enthalten Verbesserungen, die mehrere Verarbeitungsregionen mit Wahrscheinlichkeiten zwischen 0 und 1 zulassen, was den ungefähren Prozentsatz des Wiedergabeverkehrs darstellt, der diese Region verwendet.

Cuepoints manuell hinzufügen

Das manuelle Hinzufügen von Cuepoints zu einem Livestream mit Redundanz ist dem Hinzufügen von Cuepoints zu einem normalen Livestream sehr ähnlich. Um dies für eine redundante Gruppe zu tun, machen Sie a POST Anfrage zu:

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

Fügen Sie einen Anfragetext wie den folgenden ein:

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

Wenn Sie das weglassen timecode Feld wird der Cuepoint sofort eingefügt.

Job-Failover erzwingen

Failover wird automatisch vom Brightcove Live-System verwaltet und sollte kein Eingreifen Ihrerseits erfordern. Wenn Sie jedoch aus irgendeinem Grund ein Failover auf einen anderen Job erzwingen möchten, besteht die einfachste Möglichkeit darin, den Encoder des on_air Job.

Sie können ein Failover auch mithilfe der API erzwingen, indem Sie a PUT Anfrage zu:

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

Der Anfragetext sieht so aus:

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

Hier, mode wird entweder manual oder auto (die Standardeinstellung) und die on_air hat einen Wert von einem der sekundär Job-IDs.

Hinweis: Einmal in manual Modus wird das automatische Job-Failover nicht auftreten. Du muss setze den Modus zurück auf auto damit das automatische Failover wieder aufgenommen wird. Sie können den On-Air-Job ändern, ohne in den manuellen Modus zu wechseln, indem Sie den Modus aus dem Hauptteil weglassen und den Force-Abfrageparameter hinzufügen ?force=true auf Ihre Anfrage. Dadurch wird der Dienst gezwungen, Jobs zu wechseln, aber er kann jederzeit zurückwechseln, wenn er Probleme erkennt.

Beenden eines redundanten Streams

Es gibt zwei Möglichkeiten, wie Sie Ihren redundanten Stream beenden können. Redundante Gruppen sind grundlos SEP-Streams. Sie können eine Redundante Gruppe in STANDBY durch Entfernen aller Jobs aus der redundanten Gruppe.

Um dies zu tun, verwenden Sie a DELETE Anfrage zu:

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

für jeden Job, den Sie entfernen möchten. Beachten Sie, dass Sie den aktuellen Job entfernen möchten on_air , müssen Sie hinzufügen ?force=true Abfrageparameter.

Die zweite Möglichkeit, den Stream zu beenden, besteht darin, die redundante Gruppe vollständig zu löschen, indem Sie a DELETE Anfrage zu:

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

Einschränkungen

  • Live-Redundanz kann nicht mit DRM-geschützten Livestreams verwendet werden.