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-Bilds.
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. Ich können Sie dieses Beispiel-Overlay-Bild verwenden.
Das Bild wird jetzt im Cloud Storage-Bucket gespeichert.
Asset erstellen
Assets sind Videos oder Bilder, die mit der Livestream API verwendet werden können. Erstellen Sie 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
: Ihre Google Cloud-Projektnummer. 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-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
ASSET_ID
: Eine benutzerdefinierte Kennung für das neue Asset erstellt werden soll. 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 Images in der Cloud Storage-Bucket, der verwendet werden soll, 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 in etwa folgende JSON-Antwort 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 die zurückgegebene
OPERATION_ID
zur Verwendung in
im nächsten Abschnitt.
Ergebnis prüfen
Mit der Methode projects.locations.operations.get
können Sie prüfen,
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
: Ihre Google Cloud-Projektnummer. 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-northeast1
asia-southeast1
australia-southeast1
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 in etwa folgende JSON-Antwort 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 den
projects.locations.inputs.create
-Methode.
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 anzeigenus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: eine benutzerdefinierte Kennung für die neue Eingabe Endpunkt, der erstellt werden soll (an den Sie den 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 in etwa folgende JSON-Antwort 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
: Ihre Google Cloud-Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: der Ort, an dem sich der Eingabeendpunkt befindet gefunden; eine der unterstützten Regionen verwendenStandorte anzeigenus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: die benutzerdefinierte Kennung für die Eingabeendpunkt
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort 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 Kanalkonfiguration:
"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
: Ihre Google Cloud-Projektnummer. Sie finden sie auf der Seite IAM-Einstellungen im Feld Projektnummer.LOCATION
: der Speicherort, an dem die Datei erstellt werden soll. channel; eine der unterstützten Regionen verwendenStandorte anzeigenus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: eine benutzerdefinierte Kennung für den Kanal, der verwendet werden soll. erstellen; Dieser Wert muss 1–63 Zeichen lang sein, mit[a-z0-9]
beginnen und enden. darf Bindestriche (-) zwischen den Zeichen enthaltenINPUT_ID
: die benutzerdefinierte Kennung für den EingabeendpunktBUCKET_NAME
: der Name von Cloud Storage Bucket, den Sie zum Speichern des Manifests und der Segmentdateien des Livestreams erstellt habenASSET_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 in etwa folgende JSON-Antwort 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.
Den Kanal starten
Um einen Kanal zu starten, verwende das
projects.locations.channels.start
-Methode.
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
: den Standort deines Kanals. Wähle eine der unterstützten Regionen aus.Standorte anzeigenus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
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 in etwa folgende JSON-Antwort 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.