Auf dieser Seite wird beschrieben, wie Sie Ihre Eingabestreams mit sehr geringer Latenz in der Vorschau ansehen können, um potenzielle Probleme oder Ereignisse nahezu in Echtzeit zu erkennen. So können Sie Korrekturmaßnahmen ergreifen, z. B. Streams pausieren, Anzeigen einfügen oder Slates einblenden, um die Wiedergabe für Ihre Zuschauer zu optimieren.
Vorschauinhalte sind im folgenden Format verfügbar:
- Format: MPEG-TS
- Video:
- Auflösung: 640 × 480
- Codec: H.264
- Framerate: 25 fps (Bilder pro Sekunde)
- Audio
- Codec: AAC
- Abtastrate: 48 kHz
- Protokoll: HTTPS
Hinweise
Auf dieser Seite wird davon ausgegangen, dass Sie die Schritte im Abschnitt Vorbereitung der Kurzanleitung für einen HLS-Livestream ausgeführt haben.
Eingabeendpunkt erstellen
Verwenden Sie zum Erstellen eines 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 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 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
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 diesem Befehl wird ein Vorgang mit langer Ausführungszeit erstellt, mit dem Sie den Fortschritt Ihrer Anfrage verfolgen können. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit verwalten .
Details zum Eingabeendpunkt abrufen
Rufen Sie die Details des Eingabeendpunkts mit der Methode projects.locations.inputs.get
auf.
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 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 zur späteren Verwendung im Abschnitt Eingabestream senden.
Kanäle erstellen
Verwenden Sie zum Erstellen eines Channels die Methode projects.locations.channels.create
. In den folgenden Beispielen wird ein Kanal erstellt, der einen HLS-Livestream generiert. Der Livestream besteht aus einer einzelnen Wiedergabe in High-Definition (1.280 x 720).
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 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 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 EingabeendpunktBUCKET_NAME
: Der Name des Cloud Storage-Buckets, den Sie zum Speichern des Livestream-Manifests und der Segmentdateien erstellt haben.
JSON-Text der Anfrage:
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "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 diesem Befehl wird ein Vorgang mit langer Ausführungszeit erstellt, mit dem Sie den Fortschritt Ihrer Anfrage verfolgen können. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit verwalten .
Kanal starten
Verwenden Sie zum Starten eines Channels die Methode projects.locations.channels.start
.
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 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 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 }
Mit diesem Befehl wird ein Vorgang mit langer Ausführungszeit erstellt, mit dem Sie den Fortschritt Ihrer Anfrage verfolgen können. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit verwalten .
Encoder installieren
Zur Verwendung der API benötigen Sie einen Encoder, um Eingabestreams zu generieren, die von der API verarbeitet werden.
Installieren Sie ffmpeg
, da auf dieser Seite beschrieben wird, wie Sie mit ffmpeg
Eingabestreams generieren. Sie können es in Cloud Shell mit dem folgenden Befehl installieren.
sudo apt install ffmpeg
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. Mit diesem Befehl wird ein Teststream generiert.
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \ -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Endpunkt-URL und Bearer-Token abrufen
Verwenden Sie die Methode projects.locations.inputs.preview
, um die Endpunkt-URL für die Vorschauinhalte und das für die Authentifizierung erforderliche Bearer-Token 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 Standort Ihres 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:
{ "uri": ENDPOINT_URL, # For example, "preview.k3fhpvei3vvf.us-central1.livestream.goog/inputs/my-preview-input", "bearerToken": "BEARER_TOKEN" }
Sie verwenden die Werte aus den Feldern uri
und bearerToken
im nächsten Abschnitt.
Vorschauinhalte anzeigen
Sie haben die folgenden primären Optionen zum Anzeigen der Vorschauinhalte:
mpegts.js
mpegts.js ist eine Bibliothek, die auf GitHub verfügbar ist und mit der MPEG-TS-Streams in einem Webbrowser wiedergegeben werden können.
Kopieren Sie die Werte aus den Feldern bearerToken
und uri
, die Sie in einem vorherigen Schritt erhalten haben, in den folgenden HTML-Code. Erstellen Sie eine HTML-Datei aus dem folgenden HTML-Code und öffnen Sie sie in einem Browser.
<html>
<head>
<script src="https://xqq.im/mpegts.js/dist/mpegts.js"></script>
<video id="video" autoplay controls muted></video>
<script>
function main() {
if (!mpegts.getFeatureList().mseLivePlayback) {
console.log("MSE live playback is not supported by the browswer!")
return;
}
var videoElement = document.getElementById("video");
player = mpegts.createPlayer(
{
type: "mse",
isLive: true,
<!-- Placeholder: Replace ENDPOINT_URL with the actual endpoint URL -->
url: "ENDPOINT_URL",
},
{
headers: {
<!-- Placeholder: Replace BEARER_TOKEN with the actual bearer token -->
Authorization: "BEARER_TOKEN",
},
}
);
player.attachMediaElement(videoElement);
player.load();
player.play();
}
main();
</script>
</body>
</html>
Während des Livestreams sollte ein Testmuster mit einer geringeren Latenz als der zugehörige Livestream wiedergegeben werden. Mit diesem Stream-Player kann nur der erste Audiotrack in einem Stream wiedergegeben werden.
FFplay
FFplay ist ein vielseitiger Befehlszeilen-Mediaplayer, der die FFmpeg-Bibliotheken verwendet. Downloads für FFplay finden Sie auf der Seite FFmpeg herunterladen.
Öffnen Sie ein neues Terminalfenster. Kopieren Sie die Werte aus den Feldern bearerToken
und uri
, die Sie in einem vorherigen Schritt erhalten haben, in den folgenden Befehl und führen Sie ihn dann aus.
ffplay -headers "Authorization: Bearer BEARER_TOKEN" \ -fflags nobuffer -flags low_delay -probesize 32 -analyzeduration 0 \ ENDPOINT_URL
Während des Livestreams sollte ein Testmuster mit einer geringeren Latenz als der zugehörige Livestream wiedergegeben werden. ffplay
unterstützt das Umschalten zwischen Audiotracks durch Drücken der Taste „A“.
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 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 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 }
Mit diesem Befehl wird ein Vorgang mit langer Ausführungszeit erstellt, mit dem Sie den Fortschritt Ihrer Anfrage verfolgen können. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit verwalten .
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 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 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 }
Mit diesem Befehl wird ein Vorgang mit langer Ausführungszeit erstellt, mit dem Sie den Fortschritt Ihrer Anfrage verfolgen können. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit verwalten .
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 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/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 }
Mit diesem Befehl wird ein Vorgang mit langer Ausführungszeit erstellt, mit dem Sie den Fortschritt Ihrer Anfrage verfolgen können. Weitere Informationen finden Sie unter Vorgänge mit langer Ausführungszeit verwalten .
Cloud Storage-Bucket löschen
Wechseln Sie in der Google Cloud Console zur Seite „Cloud Storage-Browser“.
Klicken Sie das Kästchen neben dem von Ihnen erstellten Bucket an.
Klicken Sie auf Löschen.
Klicken Sie im angezeigten Dialogfeld auf Löschen, um den Bucket und seinen Inhalt zu löschen.