Livestreams an Remote-Endpunkte verteilen

Auf dieser Seite wird beschrieben, wie Sie die Ausgabe des Livestreams über das SRT-Protokoll (Secure Reliable Transport) oder das RTMP-Protokoll (Real-Time Messaging Protocol) an Remote-Endpunkte verteilen. Sowohl SRT als auch RTMP werden im Push-Modus verwendet, um den Stream an die Endpunkte zu senden. Die unterstützten Containerformate sind MPEG-TS für SRT und FLV für RTMP.

Hinweise

Auf dieser Seite wird davon ausgegangen, dass Sie die Schritte im Abschnitt Vorbereitung der Kurzanleitung für einen HLS-Livestream ausgeführt haben.

Erstellen Sie je nach ausgewähltem Verteilungsprotokoll einen SRT- oder RTMP-Endpunkt beim Anbieter, bei dem Sie die Ausgabe im Push-Modus empfangen möchten. Das Format des Endpunkt-URI variiert je nach Protokoll:

  • Für SRT: srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID
  • Für RTMP: rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/RTMP_STREAM_KEY oder nur rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME

SRT_SERVER_IP und RTMP_SERVER_IP können entweder eine IP-Adresse oder ein Domainname sein.

Eingabeendpunkt erstellen

Verwenden Sie zum Erstellen des Eingabeendpunkts die Methode projects.locations.inputs.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Speicherort, an dem der Eingabeendpunkt erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: Eine benutzerdefinierte ID für den neuen Eingabeendpunkt, der erstellt werden soll (an den Sie Ihren Eingabestream senden). Dieser Wert muss 1–63 Zeichen lang sein, mit [a-z0-9] beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten. Beispiel: my-input

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Kopieren Sie den zurückgegebenen OPERATION_ID zur Verwendung im nächsten Abschnitt.

Ergebnis prüfen

Verwenden Sie die Methode projects.locations.operations.get, um zu prüfen, ob der Eingabeendpunkt erstellt wurde. Wenn die Antwort "done: false" enthält, wiederholen Sie den Befehl, bis die Antwort "done: true" enthält. Das Erstellen des ersten Eingabeendpunkts in einer Region kann bis zu 10 Minuten dauern.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Eingabeendpunkts. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • OPERATION_ID: die Kennung für den Vorgang

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "endTime": END_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input",
    "name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "createTime": CREATE_TIME,
    "updateTime": UPDATE_TIME,
    "type": "RTMP_PUSH",
    "uri":  INPUT_STREAM_URI, # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b",
    "tier": "HD"
  }
}

Suchen Sie das Feld uri und kopieren Sie den zurückgegebenen INPUT_STREAM_URI zur späteren Verwendung im Abschnitt Eingabestream senden.

Kanal erstellen

Verwenden Sie zum Erstellen des Kanals die Methode projects.locations.channels.create.

Beachten Sie bei der Channelkonfiguration Folgendes:

  • Das Array distributionStreams enthält die Multiplexing-Einstellungen von Streams für Verteilungen.
  • Jedes DistributionStream-Objekt muss die Felder key, container und elementaryStreams enthalten.

    {
      "distributionStreams": [
        {
          "key": "ds1",
          "container": "ts", // to be used with an SRT distribution
          "elementaryStreams": [
            "es_video_720",
            "es_audio"
          ]
        },
        {
          "key": "ds2",
          "container": "flv", // to be used with an RTMP distribution
          "elementaryStreams": [
            "es_video_640",
            "es_audio"
          ]
        }
      ]
    }
    
  • Das Array distributions listet die Verteilungskonfigurationen auf, einschließlich der Remote-Endpunkte.

  • Legen Sie das Feld distributionStream im Objekt Distribution auf die key eines DistributionStream-Objekts fest.

  • Legen Sie für die SRT-Verteilung die uri im SrtPushOutputEndpoint-Objekt auf einen von Ihnen erstellten SRT-Endpunkt fest. Legen Sie für die RTMP-Verteilung die uri im RtmpPushOutputEndpoint-Objekt auf einen von Ihnen erstellten RTMP-Endpunkt fest.

    {
      "distributions": [
        {
          "key": "pd1",
          "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
          "srtPush": {
            "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
          }
        },
        {
          "key": "pd2",
          "distributionStream": "ds2", // defined in a distributionStreams[] object with an FLV container
          "rtmpPush": {
            "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/",
            "streamKey": "RTMP_STREAM_KEY"
          }
        }
      ]
    }
    
  • Informationen zum Verteilen von KI-generierten Untertiteln und übersetzten Untertiteln finden Sie im Leitfaden Automatische Untertitel und Übersetzungen konfigurieren.

In den folgenden Beispielen werden nur ein DistributionStream-Objekt und ein Distribution-Objekt verwendet.

REST

SRT

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: der Ort, an dem der Channel erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: Eine benutzerdefinierte Kennung für den zu erstellenden Channel. Dieser Wert muss 1–63 Zeichen lang sein, mit [a-z0-9] beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten.
  • INPUT_ID: die benutzerdefinierte Kennung für den Eingabeendpunkt
  • BUCKET_NAME: Der Name des Cloud Storage-Buckets, den Sie zum Speichern des Livestream-Manifests und der Segmentdateien erstellt haben.
  • SRT_SERVER_IP: die IP-Adresse oder der Domainname des Remote-Endpunkts
  • SRT_SERVER_PORT: die Portnummer des Remote-Endpunkts
  • SRT_SERVER_STREAM_ID: die Stream-ID des Remote-Endpunkts

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

RTMP

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: der Ort, an dem der Channel erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: Eine benutzerdefinierte Kennung für den zu erstellenden Channel. Dieser Wert muss 1–63 Zeichen lang sein, mit [a-z0-9] beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten.
  • INPUT_ID: die benutzerdefinierte Kennung für den Eingabeendpunkt
  • BUCKET_NAME: Der Name des Cloud Storage-Buckets, den Sie zum Speichern des Livestream-Manifests und der Segmentdateien erstellt haben.
  • RTMP_SERVER_IP: die IP-Adresse oder der Domainname des Remote-Endpunkts
  • RTMP_SERVER_PORT: die Portnummer des Remote-Endpunkts
  • RTMP_APP_NAME: das Pfadpräfix für den Streamnamen
  • RTMP_STREAM_KEY: der Stream-Schlüssel des Remote-Endpunkts

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Kanal abrufen

Nachdem der Channel erstellt wurde, können Sie den Channelstatus mit der Methode projects.locations.channels.get abfragen.

REST

SRT

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "videoStream": {
        "h264": {
          "widthPixels": 1280,
          "heightPixels": 720,
          "frameRate": 30,
          "bitrateBps": 3000000,
          "gopDuration": "2s",
          "vbvSizeBits": 3000000,
          "vbvFullnessBits": 2700000,
          "entropyCoder": "cabac",
          "profile": "high"
        }
      },
      "key": "es_video"
    },
    {
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "channelCount": 2,
        "sampleRateHertz": 48000
      },
      "key": "es_audio"
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts"
      ],
      "maxSegmentCount": 5,
      "segmentKeepDuration": "60s",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "srtPush": {
        "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
      }
    }
  ]
}

RTMP

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "videoStream": {
        "h264": {
          "widthPixels": 1280,
          "heightPixels": 720,
          "frameRate": 30,
          "bitrateBps": 3000000,
          "gopDuration": "2s",
          "vbvSizeBits": 3000000,
          "vbvFullnessBits": 2700000,
          "entropyCoder": "cabac",
          "profile": "high"
        }
      },
      "key": "es_video"
    },
    {
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "channelCount": 2,
        "sampleRateHertz": 48000
      },
      "key": "es_audio"
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_ts",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_ts"
      ],
      "maxSegmentCount": 5,
      "segmentKeepDuration": "60s",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "flv",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "rtmpPush": {
        "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME",
        "streamKey": "RTMP_STREAM_KEY"
      }
    }
  ]
}

Die vollständige Antwort enthält die folgenden Felder:

{
  ...
  "streamingState": "STOPPED",
  "distributions": [
    {
      ...
      "state": "NOT_READY"
      ...
    }
  ]
  ...
}

Diese Antwort gibt den Streamingstatus des Kanals und die Kanalverteilungen an.

Wenn sich die Verteilung im NOT_READY-Status befindet, kann sie nicht gestartet werden. Du musst warten, bis sich der Status in READY geändert hat, bevor du deinen Stream verteilen kannst.

Das Erstellen des ersten Vertriebsstroms kann bis zu 10 Minuten dauern. Der Status der Verteilung ist unabhängig vom Channel-Status. Sie können den Channel starten und warten, bis die Verteilung READY ist, und dann die Verteilung starten.

Sie können den Kanal jetzt starten.

Kanal starten

Verwenden Sie die Methode projects.locations.channels.start, um den Channel zu starten. Ein Channel muss gestartet werden, bevor er Eingabestreams empfangen oder einen Ausgabestream generieren kann.

Das Starten des ersten Kanals in einer Region dauert etwa 10 Minuten.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "start",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Um festzustellen, ob der Channel gestartet wurde, rufen Sie die Channelinformationen ab, wie zuvor beschrieben. Die Antwort sollte Folgendes enthalten:

{
  ...
  "streamingState": "AWAITING_INPUT"
  ...
}

Eingabestream senden

Öffnen Sie ein neues Terminalfenster. Führen Sie den folgenden Befehl aus und verwenden Sie dabei INPUT_STREAM_URI aus dem Abschnitt Ergebnis prüfen:

ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
  -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI

Der Kanal streamt jetzt, aber die Veröffentlichungen sind weiterhin angehalten.

Verteilungen starten

Die Verteilungen müssen den Status READY haben, damit sie gestartet werden können. Verwenden Sie die Methode projects.locations.channels.startdistribution, um die Ausgabe des Livestreams an alle Remote-Endpunkte zu verteilen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen. Nach dem Start einer Verteilung kann sie sich im Status AWAITING_INPUT befinden, wenn der Eingabestream nicht gestartet wurde, oder im Status DISTRIBUTING, wenn der Eingabestream an die angegebenen Endpunkte verteilt wird.

(Optional) Verteilungen starten

Sie können eine Reihe von Verteilungen starten, anstatt alle auf einmal. Listen Sie die Verteilungen auf, die Sie hinzufügen möchten, indem Sie ihre Schlüssel der Array-Liste distributionKeys hinzufügen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel
  • DISTRIBUTION_KEYS: Eine durch Kommas getrennte Liste von String-Schlüsseln (z. B. "pd1")

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Prüfen, ob die Verteilungen ausgeführt werden

Um zu prüfen, ob die Verteilungen gestartet wurden, rufen Sie die Kanalinformationen ab, wie zuvor beschrieben. Die Antwort sollte Folgendes enthalten:

{
  "distributions": [
    {
      ...
      "state": "DISTRIBUTING"
      ...
    },
    ...
  ]
}

Prüfen Sie auf dem Remote-SRT- oder RTMP-Server, ob der von Ihnen erstellte Endpunkt Daten empfängt.

Verteilungen beenden

Wenn Sie die Verteilung des Livestream-Outputs an alle Remote-Endpunkte beenden möchten, verwenden Sie die Methode projects.locations.channels.stopdistribution.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Optional: Eine Reihe von Verteilungen beenden

Sie können eine Reihe von Verteilungen anhalten, anstatt alle gleichzeitig. Führen Sie die Verteilungen auf, die Sie beenden möchten, indem Sie ihre Schlüssel der Array-Liste distributionKeys hinzufügen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel
  • DISTRIBUTION_KEYS: Eine durch Kommas getrennte Liste von String-Schlüsseln (z. B. "pd1")

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Unterstützung für SRT-Verschlüsselung

Wenn Sie das SRT-Protokoll verwenden, um die Livestream-Ausgabe an den Remote-Endpunkt zu verteilen, schützt die Live Stream API Ihre Livestream-Inhalte mit AES-Verschlüsselung.

Passphrase erstellen und Remote-SRT-Server vorbereiten

Erstellen Sie zuerst eine SRT-Passphrase, die dem Remote-SRT-Server entspricht. Die Passphrase sollte in der Regel ein String mit 10 bis 79 Zeichen sein.

Achten Sie darauf, dass die Entschlüsselung funktioniert, indem Sie dieselbe Passphrase auf dem Remote-SRT-Server festlegen. Informationen dazu finden Sie im Nutzerhandbuch des Remote-SRT-Servers.

Passphrase in Secret Manager hinzufügen

Die Live Stream API akzeptiert oder verwaltet die Passphrase nicht direkt. Sie müssen die Passphrase über Google Secret Manager für die Live Stream API freigeben.

Sie müssen alle diese Schritte ausführen, bevor Sie den Channel konfigurieren:

  1. Erstellen Sie ein Secret mit Secret Manager.
  2. Konfigurieren Sie die IAM-Berechtigungen (Identity and Access Management) für Ihr Secret so, dass die Live Stream API auf den Secret-Inhalt zugreifen kann. Weisen Sie dazu dem Dienstkonto service-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com die Rolle secretmanager.secretAccessor zu. Das ist ähnlich wie beim Zugriff des Dienstkontos auf Ihre Cloud Storage-Buckets.
  3. Suchen Sie den Ressourcennamen der Secret-Version, die Sie erstellt haben (z. B. projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID). Sie benötigen diesen Namen, um den Channel zu konfigurieren.

Kanal konfigurieren

Die Secret-Version der Passphrase wird innerhalb von SrtPushOutputEndpoint angegeben:

{
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
      "srtPush": {
        "uri": "srt://{SRT_SERVER_IP}:{SRT_SERVER_PORT}?streamid={SRT_SERVER_STREAM_ID}",
        "passphrase_secret_version": "projects/PROJECT_NUMBER/secrets/key1/versions/1"
      }
    }
  ]
}

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

Kanal beenden

Verwenden Sie die Methode projects.locations.channels.stop, um den Channel zu stoppen. Sie müssen den Channel beenden, bevor Sie ihn löschen können.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stop",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Eingabestream beenden

Wenn du ffmpeg zum Senden des Eingabestreams verwendet hast, wird die Verbindung automatisch getrennt, nachdem du den Kanal beendet hast.

Den Kanal löschen

Verwende die Methode projects.locations.channels.delete, um den Channel zu löschen. Sie müssen den Kanal löschen, bevor Sie den vom Kanal verwendeten Eingabeendpunkt löschen können.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Channels. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: eine benutzerdefinierte Kennung für den Channel

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Eingabeendpunkt löschen

Verwenden Sie die Methode projects.locations.inputs.delete, um den Eingabeendpunkt zu löschen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Google Cloud Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.
  • LOCATION: Der Standort Ihres Eingabeendpunkts. Verwenden Sie eine der unterstützten Regionen.
    Standorte anzeigen
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: die benutzerdefinierte Kennung für den Eingabeendpunkt

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Sie können das Ergebnis des Vorgangs anhand der neuen Vorgangs-ID abrufen.

Cloud Storage-Bucket löschen

  1. Wechseln Sie in der Google Cloud Console zur Seite „Cloud Storage-Browser“.

    Zum Cloud Storage-Browser

  2. Klicken Sie das Kästchen neben dem von Ihnen erstellten Bucket an.

  3. Klicken Sie auf Löschen.

  4. Klicken Sie im angezeigten Dialogfeld auf Löschen, um den Bucket und seinen Inhalt zu löschen.