Auf dieser Seite wird beschrieben, wie du statische Overlay-Bilder über einem Livestream generieren kannst. Ein statisches Overlay-Bild bleibt während des gesamten Livestreams bestehen. Sie können die Auflösung und Position eines statischen Overlay-Bildes konfigurieren.
Google Cloud-Projekt und Authentifizierung einrichten
Wenn Sie noch kein Google Cloud-Projekt und keine Anmeldedaten erstellt haben, lesen Sie den Abschnitt Vorbereitung.Bild in den Cloud Storage-Bucket hochladen
- Wechseln Sie in der Google Cloud Console zur Seite „Cloud Storage-Browser“.
Zum Cloud Storage-Browser - Klicken Sie auf den Namen Ihres Buckets, um ihn zu öffnen.
- Klicken Sie auf Dateien hochladen.
- Wählen Sie eine Bilddatei (JPEG oder PNG) zum Hochladen von Ihrem lokalen Computer aus. Du kannst dieses Beispiel-Overlay-Bild verwenden.
Das Bild wird jetzt im Cloud Storage-Bucket gespeichert.
Asset erstellen
Assets sind Videos oder Bilder, die mit der Live Stream API verwendet werden können. Erstelle ein Bild-Asset, das als statisches Overlay verwendet werden soll.
Verwenden Sie zum Erstellen eines Assets die Methode projects.locations.assets.create
.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Die Projektnummer Ihres Google Cloud . Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: Der Speicherort, an dem das Asset erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-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
ASSET_ID
: Eine benutzerdefinierte Kennung für das neue zu erstellende Asset. Dieser Wert muss 1–63 Zeichen lang sein, mit[a-z0-9]
beginnen und enden und darf zwischen den Zeichen Bindestriche (-) enthalten. Beispiel:my-asset
ASSET_URI
: Der URI des Bilds in Ihrem Cloud Storage-Bucket, z. B.gs://my-bucket/my-image.png
.
JSON-Text der Anfrage:
{ "image": { "uri": "ASSET_URI" } }
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/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Kopieren Sie den zurückgegebenen OPERATION_ID
, um ihn im nächsten Abschnitt zu verwenden.
Ergebnis prüfen
Mit der Methode projects.locations.operations.get
kannst du prüfen, ob das Asset erstellt wurde. Wenn die Antwort "done: false"
enthält, wiederholen Sie den Befehl, bis die Antwort "done: true"
enthält.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Die Projektnummer Ihres Google Cloud . Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: Der Speicherort des Assets. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-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 Kennzeichnung 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/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Asset", "name": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "image": { "uri": "ASSET_URI" }, "crc32c": "ae1EJg==", "state": "ACTIVE" } }
Eingabeendpunkt erstellen
Verwenden Sie zum Erstellen des Eingabeendpunkts die Methode projects.locations.inputs.create
.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Die Projektnummer Ihres Google Cloud . 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 anzeigenus-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 Kennung für den neuen zu erstellenden Eingabeendpunkt, 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
JSON-Text der Anfrage:
{ "type": "RTMP_PUSH" }
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 }
Mit der neuen Vorgangs-ID können Sie das Ergebnis des Vorgangs zum Erstellen von Eingaben prüfen.
Details zum Eingabeendpunkt abrufen
Verwenden Sie die Methode projects.locations.inputs.get
, um Details zum Eingabeendpunkt abzurufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Die Projektnummer Ihres Google Cloud . Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: Der Standort des Eingabeendpunkts. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-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/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
, um ihn später im Abschnitt Eingabestream senden zu verwenden.
Kanal erstellen
Verwenden Sie zum Erstellen des Kanals die Methode projects.locations.channels.create
.
Beachten Sie das Array staticOverlays
in der Channelkonfiguration:
"staticOverlays": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"position": {
"x": 0.5,
"y": 0.5
},
"resolution": {
"w": 0.1
},
"opacity": 0.8
}
],
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Die Projektnummer Ihres Google Cloud . Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: Der Speicherort, an dem der Kanal erstellt werden soll. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-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 Kanal. 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 EingabeendpunktBUCKET_NAME
: Der Name des Cloud Storage-Buckets, den du zum Speichern des Manifests und der Segmentdateien des Livestreams erstellt hastASSET_ID
: die benutzerdefinierte Kennung für das Asset
JSON-Text der Anfrage:
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "staticOverlays": [ { "asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "position": { "x": 0.5, "y": 0.5 }, "resolution": { "w": 0.1 }, "opacity": 0.8 }, ], "elementaryStreams": [ { "key": "es_video", "videoStream": { "h264": { "profile": "high", "widthPixels": 1280, "heightPixels": 720, "bitrateBps": 3000000, "frameRate": 30 } } }, { "key": "es_audio", "audioStream": { "codec": "aac", "channelCount": 2, "bitrateBps": 160000 } } ], "muxStreams": [ { "key": "mux_video_ts", "container": "ts", "elementaryStreams": ["es_video", "es_audio"], "segmentSettings": { "segmentDuration": "2s" } } ], "manifests": [ { "key": "manifest_hls", "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5 } ] }
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 }
Mit der neuen Vorgangs-ID kannst du das Ergebnis des Kanalerstellungsvorgangs prüfen.
Kanal starten
Verwenden Sie zum Starten eines Kanals die Methode projects.locations.channels.start
.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_NUMBER
: Die Projektnummer Ihres Google Cloud . Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: den Standort, an dem sich Ihr Kanal befindet. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-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 Kanal
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 }
Mit der neuen Vorgangs-ID kannst du das Ergebnis des Kanalstarts prüfen.
Eingabestream senden
Öffnen Sie ein neues Terminalfenster. Führen Sie den folgenden Befehl aus und verwenden Sie dabei INPUT_STREAM_URI
aus dem Abschnitt Details zum Eingabeendpunkt abrufen:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Generierten Livestream wiedergeben
Führen Sie die folgenden Schritte aus, um die generierte Mediadatei in Shaka Player abzuspielen:
- Machen Sie den von Ihnen erstellten Cloud Storage-Bucket öffentlich.
- So aktivieren Sie Cross-Origin Resource Sharing (CORS) für einen Cloud Storage-Bucket:
- Erstellen Sie eine JSON-Datei, die Folgendes enthält:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
- Führen Sie den folgenden Befehl aus, nachdem Sie
JSON_FILE_NAME
durch den Namen der im vorherigen Schritt erstellten JSON-Datei ersetzt haben:gcloud storage buckets update gs://BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- Erstellen Sie eine JSON-Datei, die Folgendes enthält:
- Suchen Sie im Cloud Storage-Bucket die generierte Datei
main.m3u8
. Klicken Sie in der Spalte Öffentlicher Zugriff der Datei auf URL kopieren. - Rufen Sie Shaka Player, ein Online-Livestream-Player, auf.
- Klicken Sie in der Navigationsleiste oben auf Benutzerdefinierte Inhalte.
- Klicken Sie auf die Schaltfläche +.
Fügen Sie die öffentliche URL der Datei in das Feld URL manifestieren ein.
Geben Sie einen Namen in das Feld Name ein.
Klicken Sie auf Speichern.
Klicken Sie auf Wiedergabe.
Das Overlay sollte jetzt über dem Livestream angezeigt werden.