1. Einführung
Content Delivery Networks (CDNs) verbessern die Nutzerleistung, indem sie häufig aufgerufene Inhalte näher an den Endnutzern im Cache speichern, Verbindungen näher an den Clients beenden, Verbindungen zum Ursprung wiederverwenden und moderne Netzwerkprotokolle und ‑anpassungen nutzen. Für Nutzer (und unsere Kunden) bedeutet das eine geringere Latenz, mehr Zuverlässigkeit und geringere Kosten. Das führt zu besseren Verkäufen, einer besseren Webnutzung und einer insgesamt verbesserten Nutzererfahrung. Nur sehr wenige moderne Websites und Videostreaming-Plattformen funktionieren heutzutage ohne CDN.
Lerninhalte
In diesem Lab führen wir Sie durch die Schritte zum Bereitstellen einer Live-Streaming-Workflow-Umgebung mit Media CDN (CDN) + Cloud Media Live Streaming API (Live-Videotranscodierung) + Cloud Storage (Speicher für die Videos) + Videoplayer (VLC, Google Shaka Player usw. – HLS + MPEG-DASH-kompatibler Player).
Wir richten die Komponenten der Live Streaming API ein – Input und Channel – und starten mit FFmpeg einen Livefeed an den Input/Channel. FFmpeg kann ein Live-Testsignal generieren. Die Live Streaming API transkodiert den Livefeed. Das transkribierte Videomanifest und die Segmente werden in einem Cloud Storage-Bucket gespeichert. Anschließend richten wir Media CDN mit dem Cloud Storage-Bucket für Live-Videos als Ursprung ein. Schließlich wird der VLC-Player verwendet, um Liveinhalte abzuspielen, die über das Media-CDN im Cache gespeichert wurden. Außerdem richten wir ein Cloud Monitoring-Dashboard ein, um die Aktivitäten von Media CDN zu visualisieren.
Umfang
In diesem Lab richten wir die Umgebung anhand der folgenden Architektur ein:
Im Rahmen des Labs richten wir die folgenden Komponenten ein und führen die folgenden Aufgaben aus:
- Google Cloud Storage-Bucket (GCS) zum Speichern der live transkribierten Videos erstellen
- Live Streaming API so konfigurieren, dass das Video in mehrere Formate transcodiert wird: HLS + MPEG DASH, SD und HD
- Komponenten für Livestreaming einrichten: Eingabe/Kanal
- Livestream-Kanal starten
- Media CDN mit dem GCS-Bucket als Ursprung einrichten
- FFmpeg für den Livekanal einrichten
- Transcodierten Livefeed mit einem Videoplayer streamen
- Cloud Monitoring-Dashboard einrichten, um Media CDN-Aktivitäten (z. B. Latenz, Cache-Treffer, Cache-Fehler) zu überwachen
Hinweis: Für dieses Lab wird davon ausgegangen, dass die Nutzer Zugriff auf die Google Cloud Console haben und bereits ein Projekt eingerichtet haben. Außerdem gehen wir davon aus, dass die Nutzer mit einer neuen Umgebung beginnen und für diese Demo nichts eingerichtet haben.
Alle Konfigurationsaktionen werden über die Befehlszeile in Cloud Shell ausgeführt. Wir können die über die Befehlszeile konfigurierten Komponenten jederzeit in der Console prüfen. Im Verlauf des Labs werden wir immer wieder auf die Google Cloud Console verweisen.
2. Hinweis
Der Zugriff auf das Media CDN ist eingeschränkt. Wenden Sie sich an Ihr Kontoteam, um Zugriff auf Media CDN zu erhalten. Er kann in deinem Namen eine Zugriffsanfrage erstellen. Wenn du zu Google gehörst und Live-Streaming mit Media CDN testen möchtest, wende dich an den PM für Media CDN, um Zugriff auf Media CDN zu beantragen.
3. Einrichtung und Anforderungen
Cloud Shell starten
Sie können Google Cloud zwar per Fernzugriff von Ihrem Laptop aus nutzen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Dadurch werden Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
4. Google Cloud SDK-Version
Zum Zeitpunkt der Erstellung dieses Artikels ist 408.0.0
die neueste Google Cloud SDK-Version. Alle Befehle in diesem Lab wurden mit der neuesten Version des Google Cloud SDK getestet. Prüfen Sie vor dem Fortfahren, ob in Cloud Shell die neueste SDK-Version verwendet wird.
SDK-Version prüfen
Wir verwenden den Befehl gcloud version
, um die SDK-Version zu prüfen.
Befehl
gcloud version | grep "Google Cloud SDK"
Beispiel für eine Ausgabe
Google Cloud SDK 408.0.0
Nächste Schritte
- Wenn die SDK-Version
408.0.0
oder höher ist, fahren Sie mit dem nächsten Abschnitt fort. - Wenn die SDK-Version niedriger als
408.0.0
ist, führen Sie den unten aufgeführten Befehl aus, um das SDK zu aktualisieren.
sudo apt-get update && sudo apt-get install google-cloud-sdk
5. Vorbereitung
Bevor wir mit der Konfiguration der GCP-Ressourcen beginnen, müssen wir Folgendes tun:
- Umgebungsvariablen einrichten
- Erforderliche Dienst-APIs aktivieren
1. Umgebungsvariablen einrichten
In diesem Lab führen wir gcloud
- und curl
-Befehle mit einigen Variablen aus. Wir müssen die folgenden Umgebungsvariablen konfigurieren.
- Projekt-ID
- Projektnummer
- Nutzername
- Region
- Eingabe-ID
- Kanal-ID
Projekt-ID und Nutzername
Diese Umgebungsvariablen sind in der Regel in Cloud Shell vorkonfiguriert. Wir verwenden den Befehl env
, um das zu überprüfen.
Befehl
env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME'
Beispiel für eine Ausgabe
DEVSHELL_PROJECT_ID=<YOUR_PROJECT_ID> LOGNAME=<YOUR_USERNAME>
env_variables
-Datei erstellen
Verwenden Sie den Befehl cat
, um die env_variables.txt
-Datei zu erstellen. Mit dem folgenden Befehl wird die Datei env_variables.txt
im Basisverzeichnis des Nutzers erstellt.
Befehle
cat > ~/env_variables.txt << EOF export PROJECT_NUMBER=$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)") export LOCATION=us-west2 export INPUT_ID=lab-live-input export CHANNEL_ID=lab-live-channel EOF
Umgebungsvariablen einrichten
Wir verwenden den Befehl source
, um die Umgebungsvariablen festzulegen.
Befehl
source ~/env_variables.txt
Prüfen, ob die Variablen festgelegt sind
Prüfen wir, ob alle erforderlichen Umgebungsvariablen festgelegt sind. In der Ausgabe sollten insgesamt sechs Umgebungsvariablen zu sehen sein.
Befehl
env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME|PROJECT_NUMBER|LOCATION|INPUT_ID|CHANNEL_ID'
Beispiel für eine Ausgabe
LOCATION=us-west2 DEVSHELL_PROJECT_ID=<YOUR_PROJECT_ID> LOGNAME=<YOUR_USERNAME> PROJECT_NUMBER=<YOUR_PROJECT_NUMBER> INPUT_ID=lab-live-input CHANNEL_ID=lab-live-channel
2. Erforderliche Dienst-APIs aktivieren
Wir müssen dafür sorgen, dass die folgenden APIs in unserem Projekt aktiviert sind.
- Network Services API
- Certificate Manager API
- Livestream API
- Media CDN Edge Cache API
Network Services API aktivieren
Führen Sie den folgenden Befehl aus, um die Network Services API zu aktivieren:
Befehl
gcloud services enable networkservices.googleapis.com
Certificate Manager API aktivieren
Führen Sie den folgenden Befehl aus, um die Certificate Manager API zu aktivieren:
Befehl
gcloud services enable certificatemanager.googleapis.com
Livestream API aktivieren
Führen Sie den folgenden Befehl aus, um die Live Stream API zu aktivieren:
Befehl
gcloud services enable livestream.googleapis.com
Media CDN Edge Cache API aktivieren
Führen Sie den folgenden Befehl aus, um die Media CDN Edge Cache API zu aktivieren:
Befehl
gcloud services enable edgecache.googleapis.com
Prüfen, ob die APIs aktiviert sind
Führen Sie den Befehl gcloud services list
aus, um alle aktivierten APIs aufzulisten. In der Ausgabe sollten vier APIs angezeigt werden.
Befehl
gcloud services list | grep -E 'networkservices|certificatemanager|livestream|edgecache'
Beispiel für eine Ausgabe
NAME: certificatemanager.googleapis.com NAME: livestream.googleapis.com NAME: networkservices.googleapis.com NAME: edgecache.googleapis.com
6. Cloud Storage-Bucket erstellen
In diesem Abschnitt führen wir folgende Schritte aus:
- Cloud Storage-Bucket erstellen
- Bucket öffentlich zugänglich machen
Später in diesem Lab verwenden wir diesen Bucket, um die transkodierten Videodateien zu speichern. Dieser Bucket dient auch als Ursprungsspeicher für den Media CDN-Dienst.
1. Bucket erstellen
Wir verwenden den Befehl gsutil mb
, um den Bucket zu erstellen:
Befehl
gsutil mb gs://live-streaming-storage-$LOGNAME
2. Bucket öffentlich zugänglich machen
Wir verwenden den Befehl gsutil
iam
, um die Dateien öffentlich verfügbar zu machen:
Befehl
gsutil iam ch allUsers:objectViewer gs://live-streaming-storage-$LOGNAME
7. Live Streaming API-Umgebung einrichten
Die Komponenten der Live Streaming API-Kette sind so aufgebaut:
Wir haben den Cloud Storage-Bucket live-streaming-storage-$LOGNAME
im vorherigen Abschnitt erstellt. In den nächsten beiden Abschnitten erstellen wir die folgenden Ressourcen:
- Livestreaming-Eingabe:Ein Eingabeendpunkt ist ein Endpunkt, an den dein Encoder deinen Eingabestream sendet. Über den Eingabeendpunkt kannst du Konfigurationen für deinen Stream angeben, z. B. die Eingabeauflösung, den Eingabetyp und das Zuschneiden von Videos.
- Livestreaming-Kanal:Ein Kanal ist eine Ressource, die den Eingabestream über einen Eingabeendpunkt aufnimmt, den Eingabestream in mehrere Versionen transcodiert und Ausgabe-Livestreams in bestimmten Formaten am angegebenen Speicherort veröffentlicht. Du kannst einen primären und einen Sicherungseingangsstream in denselben Kanal aufnehmen.
Die folgenden Ressourcen werden später im Lab erstellt:
- Encoder: Ein Encoder ist ein Programm, mit dem Eingabestreams gesendet werden. In diesem Lab verwenden wir FFmpeg.
8. Eingabeendpunkt erstellen und konfigurieren
Datei „input.json“ erstellen
Wir erstellen eine input.json
-Datei, um den Signaltyp des Livestreams anzugeben. In diesem Lab verwenden wir das RTMP-Livesignal.
Befehl
cat > input.json << EOF { "type": "RTMP_PUSH" } EOF
Eingabeendpunkt erstellen
Zum Zeitpunkt der Erstellung dieses Labs gibt es keine gcloud-Unterstützung für die Live Stream API. Wir verwenden den Befehl curl
, um die API-Aufrufe auszuführen.
Befehl
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @input.json \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/inputs?inputId=$INPUT_ID"
Beispiel für eine Ausgabe
{ "name": "projects/PROJECT_NUMBER/locations/us-west2/operations/operation-1661405972853-5e70a38d6f27f-79100d00-310671b4", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": "2022-08-25T05:39:32.884030164Z", "target": "projects/PROJECT_NUMBER/locations/us-west2/inputs/lab-live-input", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Die Ausgabe enthält viele nützliche Informationen. Wir konzentrieren uns jedoch derzeit auf zwei Felder:
- Vorgangs-ID:Kopieren Sie die Vorgangs-ID aus der Ausgabe und notieren Sie sich diese. Unten sehen Sie die Vorgangs-ID aus dem Beispiel für die Ausgabe. Sie finden ihn in der Ausgabezeile, die mit
"name"
beginnt."operation-1661405972853-5e70a38d6f27f-79100d00-310671b4"
- Status:Wir müssen warten, bis sich der Status von
"done": false
in"done": true
ändert.
Status prüfen
Bevor wir fortfahren, müssen wir prüfen, ob der Eingabeendpunkt erfolgreich erstellt wurde und bereit ist.
Ersetzen Sie im folgenden Befehl <OPERATION>
durch die ID des Vorgangs, die Sie oben erhalten haben. In diesem Beispiel ist das "operation-1661405972853-5e70a38d6f27f-79100d00-310671b4"
.
Befehl
export OPERATION_ID_1=<OPERATION>
Befehl
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/operations/$OPERATION_ID_1"
Beispiel für eine Ausgabe
{ "name": "projects/PROJECT_NUMBER/locations/us-west2/operations/operation-1661408816982-5e70ae25cea49-617844f0-8fdcb4a1", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": "2022-08-25T06:26:57.001530499Z", "endTime": "2022-08-25T06:26:57.043623522Z", "target": "projects/PROJECT_NUMBER/locations/us-west2/inputs/lab-live-input", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input", "name": "projects/PROJECT_ID/locations/us-west2/inputs/lab-live-input", "createTime": "2022-08-25T06:26:56.997623672Z", "updateTime": "2022-08-25T06:26:56.997623672Z", "type": "RTMP_PUSH", "uri": "rtmp://34.94.97.220/live/4b7846a1-4a67-44ed-bfd0-d98281b6464a", "tier": "HD" } }
Führen Sie den Befehl so lange aus, bis "done:true"
angezeigt wird, was bedeutet, dass der Eingabeendpunkt erstellt wurde und bereit ist.
URI speichern
Wir verwenden die URI
aus der vorherigen Ausgabe später im Lab. Legen wir jetzt eine Umgebungsvariable für URI
fest.
Befehl
export URI=<uri>
Ersetzen Sie <uri>
durch den URI, den Sie oben notiert haben. Optional können Sie auch die GET-Methode verwenden, um den URI abzurufen.
Befehl
curl -s -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/inputs/$INPUT_ID" | jq .uri
9. Livestreaming-Kanal erstellen und konfigurieren
Erstellen wir nun den Livestreaming-Kanal, der mit dem Eingabeendpunkt verknüpft ist, den wir im vorherigen Abschnitt erstellt haben. Im folgenden Beispiel wird ein Kanal erstellt, der einen HLS-Livestream generiert, der aus einer einzelnen HD-Wiedergabe (1280 × 720) besteht. Der Kanal wird dem Eingabeendpunkt und dem zuvor erstellten Speicher-Bucket zugeordnet.
Datei „channel.json“ erstellen
Geben Sie in das Cloud Shell-Terminal den folgenden Befehl ein, um eine "channel.json"
-Datei zu erstellen:
Befehl
cat > channel.json << EOF { "inputAttachments": [ { "key": "my-input", "input": "projects/$PROJECT_NUMBER/locations/$LOCATION/inputs/$INPUT_ID" } ], "output": { "uri": "gs://live-streaming-storage-$LOGNAME" }, "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": [ { "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5 } ] } EOF
Kanal erstellen
Führen Sie den folgenden curl
-Befehl aus, um den Kanal zu erstellen:
Befehl
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @channel.json \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/channels?channelId=$CHANNEL_ID"
Beispiel für eine Ausgabe
{ "name": "projects/PROJECT_NUMBER/locations/us-west2/operations/operation-1661405972853-5e70a38d6f27f-79100d00-310671b4", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": "2022-08-25T05:39:32.884030164Z", "target": "projects/PROJECT_NUMBER/locations/us-west2/channels/lab-live-channel", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Notieren Sie sich die Vorgangs-ID und kopieren Sie sie. Sie benötigen sie in einem der nächsten Schritte. Sie finden ihn in der Ausgabezeile, die mit "name"
beginnt.
Status prüfen
Bevor wir fortfahren, müssen wir prüfen, ob der Kanal erfolgreich erstellt wurde und einsatzbereit ist.
Ersetzen Sie im folgenden Befehl <OPERATION>
durch die ID des Vorgangs, die Sie oben erhalten haben. In diesem Beispiel ist das operation-1661405972853-5e70a38d6f27f-79100d00-310671b4
.
Befehl
export OPERATION_ID_2=<OPERATION>
Befehl
curl -s -X GET \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/operations/$OPERATION_ID_2"
Beispiel für eine Ausgabe
"name": "projects/PROJECT_NUMBER/locations/us-west2/operations/operation-1668666801461-5eda4c3f31852-a4d2229f-0efeef9e", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": "2022-11-17T06:33:21.500841488Z", "endTime": "2022-11-17T06:33:21.529311112Z", "target": "projects/PROJECT_NUMBER/locations/us-west2/channels/lab-live-channel", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Channel", "name": "projects/PROJECT_NAME/locations/us-west2/channels/lab-live-channel", "createTime": "2022-11-17T06:33:21.497818033Z", "updateTime": "2022-11-17T06:33:21.497818033Z", "activeInput": "my-input", "output": { "uri": "gs://live-streaming-storage-LOGNAME" }, "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" } ], "streamingState": "STOPPED", "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/us-west2/inputs/lab-live-input" } ], "logConfig": { "logSeverity": "OFF" } } }
Führen Sie den Befehl so lange aus, bis "done:true"
angezeigt wird, was bedeutet, dass der Eingabeendpunkt erstellt wurde und bereit ist.
Die "streamingState"
ist derzeit "STOPPED"
. Wir starten den Channel im nächsten Abschnitt.
10. Livestreaming-Kanal starten
Nachdem wir den Livestream-Kanal erstellt haben, können wir ihn starten. In diesem Abschnitt führen wir folgende Schritte aus:
- Livestreaming-Kanal starten
- Prüfen Sie den Status des Kanals. Der
streamingState
muss"AWAITING INPUT"
sein.
1. Kanal starten
Führen Sie in Cloud Shell den folgenden curl
-Befehl aus, um den Kanal zu starten:
Befehl
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/channels/$CHANNEL_ID:start"
Beispiel für eine Ausgabe
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/operation-1661405972853-5e70a38d6f27f-79100d00-310671b4", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": "2022-08-25T05:39:32.884030164Z", "target": "projects/PROJECT_NUMBER/locations/us-west2/channels/lab-live-channel", "verb": "start", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
2. Status des Kanals prüfen
Führen Sie den folgenden curl
-Befehl aus, um den Status des Kanals abzurufen:
Befehl
curl -s -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/channels/$CHANNEL_ID" | grep "streamingState"
Beispiel für eine Ausgabe
"streamingState": "AWAITING_INPUT",
Führen Sie den Befehl so lange aus, bis „AWAITING_INPUT
“ angezeigt wird. Das bedeutet, dass der Kanal aktiv ist und ein Signal empfangen kann.
11. Media CDN konfigurieren
In diesem Abschnitt stellen wir Media CDN bereit – die CDN-Infrastruktur. Wir erstellen die folgenden Ressourcen:
- Edge-Cache-Ursprung
- Edge-Cache-Dienst
1. Edge-Cache-Ursprung erstellen
Ein Edge-Cache-Ursprung stellt einen Inhaltsspeicherort dar, z. B. einen Cloud Storage-Bucket, einen Speicherort eines Drittanbieters oder einen Load Balancer. Im CDN-Kontext ist der Ursprung (oder Ursprungsserver) der Speicherort der Quelle der Inhalte, die wir verteilen möchten, z.B. alle CSS-, JavaScript-, HTML- und Bilddateien. In diesem Lab erstellen wir einen Ursprung, der dem Cloud Storage-Bucket zugeordnet ist, den wir zu Beginn des Labs erstellt haben. Den Edge-Cache-Ursprung nennen wir cme-origin
. Am Ursprung eines CDN werden alle Quellinhalte gespeichert, bevor sie an die Edge-Cache-Server verteilt werden.
Wir verwenden den Befehl gcloud edge-cache origins create
, um den Ursprung zu erstellen. Die Ausführung des Befehls kann einige Minuten dauern.
Befehl
gcloud edge-cache origins create cme-origin \ --origin-address="gs://live-streaming-storage-$LOGNAME"
Beispielausgabe
Create request issued for: cme-origin Waiting for operation [projects/my-project/locations/global/operations/operation-1612121774168-5ba3759af1919- 3fdcd7b1-99f59223] to complete...done Created origin cme-origin
2. Edge-Cache-Dienst erstellen
Nachdem wir einen Edge-Cache-Ursprung eingerichtet haben, können wir den Edge-Cache-Dienst selbst erstellen.
Erstellen der cme-demo.yaml
-Datei
Die Konfiguration des Edge-Cache-Dienstes erfolgt über eine YAML
-Datei. Erstellen Sie in Cloud Shell eine lokale Datei namens cme-demo.yaml
. Verwenden Sie vi
, nano
oder einen anderen Editor und fügen Sie die folgenden Zeilen in die YAML-Datei ein:
name: cme-demo routing: hostRules: - hosts: - demo.cme.com pathMatcher: routes pathMatchers: - name: routes routeRules: - headerAction: responseHeadersToAdd: - headerName: x-cache-status headerValue: "{cdn_cache_status}" matchRules: - prefixMatch: / origin: cme-origin priority: 100 routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 3600s signedRequestMode: DISABLED - headerAction: responseHeadersToAdd: - headerName: x-cache-status headerValue: "{cdn_cache_status}" matchRules: - pathTemplateMatch: /**.m3u8 origin: cme-origin priority: 25 routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 1s signedRequestMode: DISABLED - headerAction: {} matchRules: - pathTemplateMatch: /**.ts origin: cme-origin priority: 50 routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 2s signedRequestMode: DISABLED
Wir belassen alle Konfigurationseinstellungen für den Edge-Cache-Dienst bei den Standardeinstellungen. In der obigen Datei gibt es drei Feldwerte, die Nutzer möglicherweise aktualisieren möchten:
name
: Der Name der Media CDN-Instanz, hier:cme-demo
hosts:
Liste der Domainnamen, die von diesem Media CDN-Dienst aufgelöst werden – hier:demo.cme.com
. Wir verwenden sie in dieser Demo. Wir verwenden die IP-Adresse der Media CDN-Instanz.Origin:
ist der Edge-Cache-Ursprung, den wir im vorherigen Schritt erstellt haben. Lege den Wert aufcme-origin
fest – den Namen des Media CDN-Ursprungs.
Weitere Informationen zu den verschiedenen Variablen, die Sie in der YAML-Datei verwenden können, finden Sie im Konfigurationsleitfaden für den Edge-Cache-Dienst.
Edge-Cache-Dienst erstellen
Wir erstellen einen Edge-Cache-Dienst namens cme-demo
auf dem Edge-Cache-Ursprung cme-origin
mit dem Host demo.cme.com
. Führen Sie in Cloud Shell den folgenden Befehl aus, um den Dienst zu erstellen:
Befehl
gcloud edge-cache services import cme-demo \ --source=cme-demo.yaml
Es kann einige Minuten dauern, bis der Edge-Cache-Dienst erstellt ist.
Beispiel für eine Ausgabe
Request issued for: [cme-demo] Waiting for operation [projects/PROJECT_ID/locations/global/operations/operation-1670476252264-5ef4a0f9f36ce-dd380af5-321be9a0] to complete...done. createTime: '2022-12-07T18:08:54.403446942Z' ipv4Addresses: - 34.104.35.152 ipv6Addresses: - '2600:1900:4110:d18::' name: projects/PROJECT_ID/locations/global/edgeCacheServices/cme-demo routing: hostRules: - hosts: - demo.cme.com - 34.104.35.152 pathMatcher: routes pathMatchers: - name: routes routeRules: - headerAction: responseHeadersToAdd: - headerName: x-cache-status headerValue: '{cdn_cache_status}' matchRules: - prefixMatch: / origin: projects/123456789/locations/global/edgeCacheOrigins/cme-origin priority: '100' routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 3600s signedRequestMode: DISABLED - headerAction: responseHeadersToAdd: - headerName: x-cache-status headerValue: '{cdn_cache_status}' matchRules: - pathTemplateMatch: /**.m3u8 origin: projects/123456789/locations/global/edgeCacheOrigins/cme-origin priority: '25' routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 1s signedRequestMode: DISABLED - headerAction: {} matchRules: - pathTemplateMatch: /**.ts origin: projects/123456789/locations/global/edgeCacheOrigins/cme-origin priority: '50' routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 2s signedRequestMode: DISABLED updateTime: '2022-12-08T05:11:31.598744308Z'
Notieren Sie sich die ipv4Addresses
der Edge-Cache-Dienstinstanz und kopieren Sie sie. In diesem Beispiel ist das 34.104.36.157
. Damit aktualisieren wir die Datei cme-demo.yaml
und streamen später das transcodierte Video.
Edge-Cache-Dienst aktualisieren
An dieser Stelle solltest du die Konfiguration des Edge-Cache-Dienstes aktualisieren, damit du die IP-Adresse des Dienstes später zum Streamen des Videos verwenden kannst. In der YAML-Datei des Edge-Cache-Dienstes können wir alle Hostnamen/IP-Adressen auflisten, von denen der Edge-Cache-Dienst Anfragen akzeptiert. Bisher haben wir nur demo.cme.com
als Host angegeben. Sie können eine DNS-Zone konfigurieren, um die Namensauflösung für diese Domain bereitzustellen. Eine einfachere Lösung wäre jedoch, die IP-Adresse der Hosts-Liste in der yaml
-Datei hinzuzufügen. Bearbeiten Sie die YAML-Datei noch einmal und ändern Sie sie so, dass sie der folgenden entspricht:
name: cme-demo routing: hostRules: - hosts: - demo.cme.com - IPADDRESS pathMatcher: routes pathMatchers: - name: routes routeRules: - headerAction: responseHeadersToAdd: - headerName: x-cache-status headerValue: "{cdn_cache_status}" matchRules: - prefixMatch: / origin: cme-origin priority: 100 routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 3600s signedRequestMode: DISABLED - headerAction: responseHeadersToAdd: - headerName: x-cache-status headerValue: "{cdn_cache_status}" matchRules: - pathTemplateMatch: /**.m3u8 origin: cme-origin priority: 25 routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 1s signedRequestMode: DISABLED - headerAction: {} matchRules: - pathTemplateMatch: /**.ts origin: cme-origin priority: 50 routeAction: cdnPolicy: cacheKeyPolicy: {} cacheMode: FORCE_CACHE_ALL defaultTtl: 2s signedRequestMode: DISABLED
Um die Änderungen zu übernehmen, müssen wir die YAML-Datei nur noch einmal importieren. Führen Sie im Cloud Shell-Terminal folgenden Befehl aus:
Befehl
gcloud edge-cache services import cme-demo \ --source=cme-demo.yaml
Prüfen Sie die Ausgabe des Befehls und achten Sie darauf, dass die IP-Adresse in der Liste der Hosts aufgeführt ist.
An diesem Punkt akzeptiert die Edge Cache Service-Instanz Anfragen mit "demo.cme.com"
oder der IP-Adresse als Host.
12. Eingabesignal generieren
Nachdem wir alle erforderlichen Dienste konfiguriert haben, generieren wir das Live-Stream-Eingabesignal. In diesem Abschnitt führen wir folgende Schritte aus:
- Installiere FFmpeg, eine kostenlose Open-Source-Software.
- Test-Livesignal an den Eingang/Kanal senden
1. FFmpeg installieren
FFmpeg ist ein kostenloses Open-Source-Softwareprojekt, das eine Reihe von Bibliotheken und Programmen zur Verarbeitung von Video-, Audio- und anderen Multimediadateien und ‑streams umfasst. Installiere FFmpeg mit dem folgenden Befehl im Cloud Shell-Terminal:
Befehl
sudo apt install ffmpeg -y
Prüfen wir nach der Installation, ob FFmpeg richtig installiert wurde. Dazu sehen wir uns die Version an:
Befehl
ffmpeg -version
Beispiel für eine Ausgabe
ffmpeg version 4.3.4-0+deb11u1 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10 (Debian 10.2.1-6) ...
FFmpeg wurde richtig installiert.
2. Starte das Livestreamsignal an den Eingang/Kanal.
Nachdem FFmpeg installiert ist, senden wir einen Testeingabestream an den Eingabeendpunkt, um den Livestream zu generieren.
Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus. Verwenden Sie dabei die URI-Umgebungsvariable, die Sie im Abschnitt „Eingabeendpunkt erstellen und konfigurieren“ erstellt haben.
Befehl
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \ -acodec aac -vcodec h264 -f flv $URI
FFmpeg sollte das Test-Livesignal senden. Der Befehl gibt keine Eingabeaufforderung zurück. Das Signal wird generiert, bis Sie es beenden. Für den Rest des Labs müssen Sie ein neues Cloud Shell-Fenster öffnen.
13. Neue Cloud Shell öffnen
Öffnen Sie jetzt ein neues Cloud Shell-Fenster, um mit dem Lab fortzufahren, da FFmpeg dauerhaft ausgeführt wird, bis Sie es mit Strg + C beenden und damit die Live-Signalgenerierung stoppen.
Klicken Sie neben dem Namen des aktuellen Cloud Shell-Terminals auf das Pluszeichen. Dadurch wird ein zusätzliches Cloud Shell-Fenster geöffnet.
Führen Sie den Rest des Labs im neu geöffneten Cloud Shell-Fenster aus.
Umgebungsvariablen einrichten
Da es sich um eine neue Cloud Shell-Sitzung handelt, müssen wir die Umgebungsvariablen noch einmal festlegen. Wir verwenden den Befehl source
, um die Umgebungsvariablen festzulegen.
Befehl
source ~/env_variables.txt
Prüfen, ob die Variablen festgelegt sind
Prüfen wir, ob alle erforderlichen Umgebungsvariablen festgelegt sind. In der Ausgabe sollten insgesamt sechs Umgebungsvariablen zu sehen sein.
Befehl
env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME|PROJECT_NUMBER|LOCATION|INPUT_ID|CHANNEL_ID'
Beispiel für eine Ausgabe
LOCATION=us-west2 DEVSHELL_PROJECT_ID=<YOUR_PROJECT_ID> LOGNAME=<YOUR_USERNAME> PROJECT_NUMBER=<YOUR_PROJECT_NUMBER> INPUT_ID=lab-live-input CHANNEL_ID=lab-live-channel
14. Prüfen, ob das Livesignal transkodiert wird
Wir führen einen curl
aus, um den Kanal zu beschreiben. In der Ausgabe sollte zu sehen sein, dass sich der StreamingState von "AWAITING_INPUT"
in "STREAMING"
geändert hat.
Befehl
curl -s -X GET -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/channels/$CHANNEL_ID" | grep "streamingState"
In der Ausgabe der JSON-Datei sollte "streamingState": "STREAMING"
angezeigt werden. Das bedeutet, dass der Kanal gestreamt und das Livesignal transkodiert wird.
Prüfen wir auch den Inhalt des Buckets. Dort sollten wir eine Manifestdatei und mehrere TS-Videosegmente sehen. Führen Sie den folgenden Befehl in Cloud Shell aus, um den Inhalt des Buckets aufzulisten, den wir zu Beginn des Labs erstellt haben und der von der Live Streaming API zum Ausgeben des transkribierten Livesignal-Manifests und der TS-Videosegmente verwendet wird:
Befehl
gcloud storage ls --recursive gs://live-streaming-storage-$LOGNAME/**
Beispiel für eine Ausgabe
gs://live-streaming-storage-$LOGNAME/ gs://live-streaming-storage-$LOGNAME/main.m3u8 gs://live-streaming-storage-$LOGNAME/mux_video_ts/index-1.m3u8 gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000016.ts gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000017.ts gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000018.ts gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000019.ts gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000020.ts gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000021.ts gs://live-streaming-storage-$LOGNAME/mux_video_ts/segment-0000000022.ts ...
Hier sollten Sie dies sehen:
- HLS-Manifestdatei:
main.m3u8
- Die entsprechenden TS-Videosegmente: eine Reihe nummerierter Dateien
segment-000000000X.ts
An dieser Stelle haben wir Folgendes erledigt:
- Live Streaming API: Das Livesignal wird generiert und über die Live Streaming API in einen Bucket transcodiert.
- Media CDN: Media CDN mit dem Storage-Bucket für Live-Streaming als Ursprung konfiguriert.
In den nächsten Abschnitten validieren wir den Edge-Cache-Dienst und streamen dann das transcodierte Video über die Anycast-IP-Adresse von Media CDN.
15. Prüfen, ob die Edge-Cache-Dienstinstanz funktioniert
In diesem Abschnitt prüfen wir, ob die Edge Cache Service-Instanz wie erwartet funktioniert. Dazu versuchen wir, über die IP-Adresse des Edge-Cache-Dienstes auf eine Datei von der Edge-Cache-Dienstinstanz zuzugreifen. Wenn zum ersten Mal auf ein Objekt zugegriffen wird, ist es noch nicht im Cache. Wir sollten einen Cache MISS
beobachten. Bei der ersten Anfrage wird das Objekt vom Ursprung gelesen und am Edge-Cache gespeichert. Alle folgenden Zugriffsversuche auf dieselbe Datei geben einen Cache-HIT
zurück, da das Objekt jetzt am Edge-Cache gespeichert ist. Lassen Sie uns das überprüfen:
Führe in Cloud Shell den folgenden curl
-Befehl aus, um auf die transkribierte Videomanifestdatei zuzugreifen, die im Edge-Cache-Ursprung gespeichert ist:
Befehl
curl -svo /dev/null --resolve demo.cme.com:80:<Replace_With_Edge_Cache_IP> \ "http://demo.cme.com/main.m3u8"
Beachten Sie die Auflösung, bei der wir die IP-Adresse der Edge Cache Service-Instanz verwenden, um ihren Namen aufzulösen. Verwenden Sie demo.cme.com:<IP>
, wobei IP die IP-Adresse der Edge-Cache-Dienstinstanz ist, die wir gerade erstellt haben.
Suchen Sie in der Ausgabe nach der Überschrift x-cache-status
.
Beispiel für eine Ausgabe
Added demo.cme.com:80:34.104.35.152 to DNS cache * Hostname demo.cme.com was found in DNS cache * Trying 34.104.35.152:80... * Connected to demo.cme.com (34.104.35.152) port 80 (#0) > GET /main.m3u8 HTTP/1.1 > Host: demo.cme.com > User-Agent: curl/7.74.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < x-guploader-uploadid: ADPycdtKtflWt4Kha5YxXNNRwO-Eu6fGSPs-T-XY4HJmNMo46VJyWlD4EAk-8a6SegxjWq3o1gTPqZbpkU_sjW__HPAdDw < date: Wed, 07 Dec 2022 18:23:46 GMT < last-modified: Wed, 07 Dec 2022 18:23:45 GMT < etag: "6bff620ccca4a9849ba4e17fa7c521fb" < x-goog-generation: 1670437425805400 < x-goog-metageneration: 1 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 193 < content-type: application/x-mpegURL < x-goog-hash: crc32c=sPO3zw== < x-goog-hash: md5=a/9iDMykqYSbpOF/p8Uh+w== < x-goog-storage-class: STANDARD < accept-ranges: bytes < content-length: 193 < server: Google-Edge-Cache < x-request-id: fd25285b-fc1a-4fd4-981a-c50ead2c85ed < x-xss-protection: 0 < x-frame-options: SAMEORIGIN < x-cache-status: den;miss < cache-control: public,max-age=3600 < { [193 bytes data] * Connection #0 to host demo.cme.com left intact
Beachten Sie die Cache-Miss, da das Objekt noch nicht im Cache gespeichert wurde und aus der Quelle gelesen wird.
Jetzt senden wir mehrere Anfragen für die m3u8
-Datei. Wenn alles richtig konfiguriert ist, sollte Media CDN die Inhalte aus seinem Cache bereitstellen. Mit dem folgenden Befehl werden 10 Curl-Anfragen gestellt und nur der x-cache-status
-Header ausgegeben.
Befehl
for i in {1..10};do curl -Is --resolve demo.cme.com:80:<Replace_With_Edge_Cache_IP> "http://demo.cme.com/main.m3u8" | grep x-cache-status;done
Die Ausgabe sollte eine Mischung aus Cache hit
und miss
sein. Wenn in der Ausgabe Cachetreffer angezeigt werden, funktioniert Media CDN wie erwartet.
Beispiel für eine Ausgabe
x-cache-status: den;miss x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit x-cache-status: den;hit
Beachten Sie den Cache-Treffer, da das Objekt jetzt am Edge-Cache gespeichert ist. Der Cloud Media Edge-Dienst funktioniert wie erwartet.
16. Transcodiertes Livesignalvideo mit VLC streamen
In diesem Teil bringen wir alle bisher erlernten Schritte zusammen:
- Wir haben einen Bucket namens
live-streaming-storage-$LOGNAME
erstellt, in dem das Ergebnis des Livesignals empfangen wird, das von der Live Streaming API in HLS-Inhalte transcodiert wurde. - Wir haben die Livestream API eingerichtet.
- Wir haben ein RTMP-Livesignal mit FFmpeg gestartet, das den Eingang/Kanal der Live Streaming API speist.
- Wir haben überprüft, ob das Livesignal an den Kanal gesendet wurde und ob der Kanal sich im Modus
streaming
befand. - Wir haben festgestellt, dass die resultierenden transkribierten Dateien (Manifest + TS-Segmente) generiert und im Bucket
live-streaming-storage-$LOGNAME
gespeichert wurden. - Ein Edge-Cache-Ursprung namens
cme-origin
wurde mit dem GCS-Bucketlive-streaming-storage-$LOGNAME
als Ursprung eingerichtet. - Eine Edge-Cache-Instanz namens
cme-demo
wurde mitcme-origin
als Ursprung eingerichtet. - Wir haben das Verhalten (Cache-Miss, Cache-Hit) der Edge-Cache-Dienstinstanz überprüft.
Jetzt können wir mit einem Videoplayer das transcodierte Livesignal über den Media CDN-Cache streamen. Dazu verwenden wir den VLC-Player. Der VLC-Player ist ein kostenloser, plattformübergreifender Open-Source-Multimediaplayer und -Framework, mit dem die meisten Multimediadateien abgespielt werden können. Es werden adaptive Medienformate wie DASH und HLS wiedergegeben. Dabei wird das Prinzip des Adaptiven Streamings verwendet: Je nach Qualität deiner Netzwerkverbindung und der verfügbaren Bandbreite passt der Player die Qualität des wiedergegebenen Videos an. Bei dem Transcodierungsjob, den wir gerade ausgeführt haben, haben wir die Standardvoreinstellungen verwendet und „nur“ zwei Qualitäten generiert: SD und HD. Wenn wir das Video im Player abspielen, sollte es im SD-Format beginnen und schnell zum HD-Format wechseln, wenn Ihre Netzwerkverbindung gut genug ist.
Wir streamen das transcodierte Livesignal im HLS-Format (weit verbreitetes Apple-Videoformat). Die entsprechende Datei heißt main.m3u8
und ist das HLS-Manifest. Das Manifest verweist auf die TS-Videosegmente.
Wenn Sie den VLC-Player verwenden möchten, rufen Sie https://www.videolan.org/vlc/ auf und laden Sie eine Version des Players für das Betriebssystem Ihres Laptops herunter. VLC ist für Windows, MacOSX, Linux, Android und iOS verfügbar.
Installiere den Player auf deinem Laptop und starte ihn. Für die nächsten Schritte verwenden wir die MacOSX-Version des Players.
Wenn Sie ein Video abspielen möchten, gehen Sie zu „Datei“ / „Netzwerk öffnen“:
Sie können es mit folgenden Geräten einrichten:
- URL: http://<Replace_With_Edge_Cache_IP>/main.m3u8. Das ist die URL des Videos, das wir streamen möchten. Hinweis:
- Die IP-Adresse der Media CDN-Instanz:
34.105.35.246
. Ersetzen Sie durch die IP-Adresse des bereitgestellten Cloud Media-Dienstes. - Der Pfad zur Manifest-Videodatei: „
/
“. Dies ist der Pfad, den wir im Bucketlive-streaming-storage-$LOGNAME
zum Speichern der transcodierten Livesignaldateien verwendet haben. Der Pfad ist hier der Basispfad: „/“. - Der Name der Manifestvideodatei: die HLS-Manifestdatei
main.m3u8
.
Klicken Sie auf „Öffnen“. Das transkodierte Live-Video sollte jetzt wiedergegeben werden. Das Video sollte dann so aussehen wie im Screenshot unten. Der Zähler auf dem Bildschirm läuft in Schritten von 1 und Sie sollten einen kontinuierlichen Piepton hören.
Es ist ein einfaches RTMP-Test-Livesignal, das von FFmpeg generiert, von der Live Streaming API in HLS transcodiert und über den Media CDN-Cache bereitgestellt wird:
Du kannst auch einen anderen HLS- und MPEG-DASH-Player verwenden. Hier sind einige Beispiele:
- Quicktime Player – standardmäßig auf Macs installiert Hier ist es genauso: Öffne eine Netzwerkverbindung zu http://34.104.36.157/main.m3u8. Ersetze die IP-Adresse durch die deiner Edge Cache Service-Instanz.
17. Media CDN überwachen
Das SME-Team hat eine Media CDN-Dashboard-Vorlage erstellt: https://gist.github.com/elithrar/1c511d00f5cd3736fb2a3897867209c1.
Führen Sie die folgenden Befehle in Cloud Shell aus, um es zu installieren:
Laden Sie die YAML-Datei herunter:
curl https://gist.githubusercontent.com/elithrar/1c511d00f5cd3736fb2a3897867209c1/raw/3cb70855304f29e5c06b8d63063196354db0dec3/media-edge-20210208-dashboard --output media-edge-20210208-dashboard.yaml
So erstellen Sie das Dashboard für Cloud Monitoring:
gcloud monitoring dashboards create --config-from-file media-edge-20210208-dashboard.yaml
Die Einrichtung kann einige Minuten dauern. Rufen Sie die Google Cloud Console auf und klicken Sie auf die drei Balken > „Verwaltung“ > „Monitoring“ > „Dashboards“. Es sollte ein Dashboard mit dem Namen „Media Edge Metrics“ angezeigt werden. Klicken Sie darauf, um die Messwerte aufzurufen:
18. Lab-Umgebung bereinigen
Herzlichen Glückwunsch zum Abschluss des Labs. In diesem Abschnitt löschen wir alle Ressourcen, die wir im Verlauf des Labs erstellt haben.
FFmpeg-Signal beenden:
Drücke im Cloud Shell-Terminal, in dem FFmpeg ausgeführt wird, die Taste <CTRL+C>
.
So beenden Sie den Livestream-Kanal:
Befehl
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d "" \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/channels/$CHANNEL_ID:stop"
So löschst du den Livestreaming-Kanal:
Befehl
curl -X DELETE -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/channels/$CHANNEL_ID"
Lösche den Endpunkt für den Live-Streaming-Eingang:
Befehl
curl -X DELETE \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ "https://livestream.googleapis.com/v1/projects/$PROJECT_NUMBER/locations/$LOCATION/inputs/$INPUT_ID"
GCS-Bucket löschen:
Befehl
gsutil rm -r gs://live-streaming-storage-$LOGNAME
Edge-Cache-Dienstinstanz löschen:
Befehl
gcloud edge-cache services delete cme-demo
Bestätigen Sie das Löschen, indem Sie auf die Aufforderung hin „Y“ eingeben.
Edge-Cache-Ursprung löschen:
Befehl
gcloud edge-cache origins delete cme-origin
Bestätigen Sie das Löschen, indem Sie auf die Aufforderung hin „Y“ eingeben.
Benutzerdefiniertes Dashboard löschen
Befehl
gcloud monitoring dashboards delete $(gcloud monitoring dashboards list --filter="displayName:Media Edge Metrics" --format="value(name)")