1. Giriş
İçerik yayınlama ağları (CDN'ler), sık erişilen içerikleri son kullanıcılara daha yakın bir konumda önbelleğe alarak, bağlantıları istemcilere daha yakın bir konumda sonlandırarak, bağlantıları kaynağa yeniden kullanarak ve modern ağ protokollerini ve özelleştirmelerini benimseyerek kullanıcı performansını artırır. Bu, kullanıcılar (ve müşterilerimiz) için daha düşük gecikme süresi, daha fazla güvenilirlik ve daha düşük maliyet anlamına gelir. Bu da satışların ve web deneyiminin iyileşmesine ve kullanıcı deneyiminde net bir artışa yol açar. Günümüzde çok az sayıda modern site ve video akışı platformu CDN olmadan çalışır.
Neler öğreneceksiniz?
Bu laboratuvarda, Media CDN (CDN) + Cloud Media Live Streaming API (canlı video transkodlama) + Cloud Storage (videolar için depolama) + Video Oynatıcı (VLC, Google Shaka Player vb. - HLS + MPEG-DASH uyumlu oynatıcı) ile canlı yayın iş akışı ortamı dağıtma adımları açıklanmaktadır.
Canlı Yayın API'si bileşenlerini (Giriş, Kanal) ayarlayacağız ve FFmpeg ile Giriş/Kanal'a canlı feed başlatacağız (FFmpeg, canlı test sinyali oluşturabilir). Live Streaming API, canlı feed'i kod dönüştürür. Dönüştürülmüş video manifestosu ve segmentleri bir Cloud Storage paketinde depolanır. Ardından, canlı video Cloud Storage paketini kaynak olarak kullanarak Media CDN'yi kurarız. Son olarak, VLC Player, Media CDN aracılığıyla önbelleğe alınan canlı içeriği oynatmak için kullanılır. Ayrıca, Media CDN'nin etkinliğini görselleştirmek için bir Cloud Monitoring kontrol paneli oluşturacağız.
Ne oluşturacaksınız?
Bu laboratuvarda, ortamı aşağıdaki mimariye göre ayarlayacağız:

Laboratuvar kapsamında aşağıdaki bileşenleri kuracak ve görevleri gerçekleştireceğiz:
- Canlı olarak kod dönüştürülmüş videoları depolamak için Google Cloud Storage (GCS) paketi oluşturun.
- Videoyu birden fazla biçime (HLS + MPEG DASH, SD ve HD) dönüştürmek için Live Streaming API'yi yapılandırın.
- Canlı yayın bileşenlerini ayarlama: Giriş/Kanal
- Canlı Yayın Kanalını Başlatma
- Kaynak olarak GCS paketiyle Media CDN'yi ayarlama
- FFmpeg'i canlı kanalı besleyecek şekilde ayarlama
- Kodu dönüştürülmüş canlı feed'i video oynatıcıyla yayınlama
- Media CDN etkinliğini (gecikme, önbellek isabeti, önbellekte yok vb.) izlemek için Cloud Monitoring kontrol paneli oluşturma
Not: Bu laboratuvarda, kullanıcıların Google Cloud Console'a erişimi olduğu ve proje kurulumunu tamamladığı varsayılır. Ayrıca, kullanıcıların yeni bir ortamla başladığını ve bu demo için hiçbir ayar yapmadığını varsayıyoruz.
Tüm yapılandırma işlemleri Cloud Shell'deki komut satırı üzerinden yapılır. Komut satırı üzerinden yapılandırılan bileşenleri dilediğimiz zaman konsolda kontrol edebiliriz. Laboratuvar boyunca Google Cloud Console'u işaret eden ipuçları göreceğiz.
2. Başlamadan önce
Media CDN erişimi kısıtlanmıştır. Media CDN'ye erişmek için hesap ekibinizle iletişime geçin. Sizin adınıza erişim isteği oluşturabilirler. Google'da çalışıyorsanız ve Media CDN ile canlı yayını test etmek istiyorsanız Media CDN'ye erişim isteğinde bulunmak için Media CDN'nin PM'i ile iletişime geçin.
3. Kurulum ve Gereksinimler
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.
4. Google Cloud SDK sürümü
Bu belge yazılırken 408.0.0, Google Cloud SDK'nın en son sürümüydü. Bu laboratuvardaki tüm komutlar, Google Cloud SDK'nın en son sürümü kullanılarak test edilmiştir. Devam etmeden önce lütfen Cloud Shell'in SDK'nın en yeni sürümünü kullandığından emin olun.
SDK sürümünü kontrol etme
SDK sürümünü kontrol etmek için gcloud version komutunu kullanacağız.
Command
gcloud version | grep "Google Cloud SDK"
Çıkış örneği
Google Cloud SDK 408.0.0
Sonraki Adımlar
- SDK sürümü
408.0.0veya daha yüksekse bir sonraki bölüme geçin. - SDK sürümü
408.0.0'dan düşükse SDK'yı güncellemek için aşağıda listelenen komutu çalıştırın.
sudo apt-get update && sudo apt-get install google-cloud-sdk
5. Ön koşullar
GCP kaynaklarını yapılandırmaya başlamadan önce aşağıdakileri yapmamız gerekir:
- Ortam değişkenlerini ayarlama
- Gerekli hizmet API'lerini etkinleştirme
1. Ortam değişkenlerini ayarlama
Bu laboratuvar boyunca, birkaç değişkenle gcloud ve curl komutlarını çalıştıracağız. Aşağıdaki ortam değişkenlerini yapılandırmamız gerekiyor.
- Proje kimliği
- Proje Numarası
- Kullanıcı adı
- Bölge
- Giriş kimliği
- Kanal Kimliği
Proje kimliği ve kullanıcı adı
Bu ortam değişkenleri genellikle Cloud Shell'de önceden yapılandırılır. Doğrulama için env komutunu kullanacağız.
Command
env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME'
Çıkış örneği
DEVSHELL_PROJECT_ID=<YOUR_PROJECT_ID> LOGNAME=<YOUR_USERNAME>
env_variables dosyasını oluşturma
env_variables.txt dosyasını oluşturmak için cat komutunu kullanın. Aşağıdaki komut, kullanıcının ana dizininde env_variables.txt dosyasını oluşturur.
Komutlar
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
Ortam değişkenlerini ayarlama
Ortam değişkenlerini ayarlamak için source komutunu kullanacağız.
Command
source ~/env_variables.txt
Değişkenlerin ayarlandığını doğrulayın
Gerekli tüm ortam değişkenlerinin ayarlandığını doğrulayalım. Çıkışta toplam 6 ortam değişkeni görmemiz gerekir.
Command
env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME|PROJECT_NUMBER|LOCATION|INPUT_ID|CHANNEL_ID'
Çıkış örneği
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. Gerekli hizmet API'lerini etkinleştirme
Projemizde aşağıdaki API'lerin etkinleştirildiğinden emin olmamız gerekir.
- Network Services API
- Certificate Manager API
- Livestream API
- Media CDN Edge Cache API
Network Services API'yi etkinleştirme
Network Services API'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
Command
gcloud services enable networkservices.googleapis.com
Certificate Manager API'yi etkinleştirme
Certificate Manager API'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
Command
gcloud services enable certificatemanager.googleapis.com
Live Stream API'yi etkinleştirme
Canlı Yayın API'sini etkinleştirmek için aşağıdaki komutu çalıştırın:
Command
gcloud services enable livestream.googleapis.com
Media CDN Edge Cache API'yi etkinleştirme
Media CDN Edge Cache API'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
Command
gcloud services enable edgecache.googleapis.com
API'lerin etkinleştirildiğini doğrulama
Etkinleştirilen tüm API'leri listelemek için gcloud services list komutunu çalıştırın. Çıkışta 4 API görmemiz gerekir.
Command
gcloud services list | grep -E 'networkservices|certificatemanager|livestream|edgecache'
Çıkış örneği
NAME: certificatemanager.googleapis.com NAME: livestream.googleapis.com NAME: networkservices.googleapis.com NAME: edgecache.googleapis.com
6. Cloud Storage paketi oluşturma
Bu bölümde şunları yapacağız:
- Cloud Storage paketi oluşturma
- Paketi herkese açık hale getirme
Laboratuvarın ilerleyen bölümlerinde, kodu dönüştürülmüş video dosyalarını depolamak için bu paketi kullanacağız. Bu paket, Media CDN hizmeti için kaynak depolama alanı olarak da işlev görür.
1. Paketi oluşturma
Paketi oluşturmak için gsutil mb komutunu kullanacağız:
Command
gsutil mb gs://live-streaming-storage-$LOGNAME
2. Paketi Herkese Açık Hale Getirme
Dosyaları herkese açık hale getirmek için gsutil iam komutunu kullanacağız:
Command
gsutil iam ch allUsers:objectViewer gs://live-streaming-storage-$LOGNAME
7. Live Streaming API ortamını ayarlama
Canlı Yayın API'si zincirinin bileşenleri aşağıdaki gibi yapılandırılmıştır:

Önceki bölümde live-streaming-storage-$LOGNAME Cloud Storage paketini oluşturmuştuk. Sonraki iki bölümde aşağıdaki kaynakları oluşturacağız:
- Canlı Yayın Girişi: Giriş uç noktası, kodlayıcınızın giriş akışınızı gönderdiği uç noktadır. Akışınızla ilgili yapılandırmaları (ör. giriş çözünürlüğü, giriş türü ve video kırpma) belirtmek için giriş uç noktasını kullanabilirsiniz.
- Canlı Yayın Kanalı: Kanal, giriş akışını bir giriş uç noktası üzerinden alan, giriş akışının kodunu birden fazla işleme dönüştüren ve çıkış canlı yayınlarını belirli biçimlerde belirtilen konumda yayınlayan bir kaynaktır. Aynı kanala birincil ve yedek giriş akışı ekleyebilirsiniz.
Laboratuvarın ilerleyen bölümlerinde aşağıdaki kaynakları oluşturacağız:
- Kodlayıcı: Kodlayıcı, giriş akışlarını göndermek için kullanılan bir programdır. Bu laboratuvarda FFmpeg'i kullanacağız.
8. Giriş uç noktasını oluşturma ve yapılandırma
input.json dosyasını oluşturma
Canlı yayın sinyal türünü belirtmek için bir input.json dosyası oluşturacağız. Bu laboratuvarda RTMP canlı sinyalini kullanıyoruz.
Command
cat > input.json << EOF
{
"type": "RTMP_PUSH"
}
EOF
Giriş uç noktasını oluşturma
Bu laboratuvarın yazıldığı sırada, Live Stream API için gcloud desteği bulunmamaktadır. API çağrılarını yapmak için curl komutunu kullanacağız.
Command
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"
Çıkış örneği
{
"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
}
Çıkışta birçok faydalı bilgi yer alıyor ancak şu anda iki alana odaklanmamız gerekiyor:
- İşlem kimliği: Çıktıdan işlem kimliğini kopyalayıp not edin. Aşağıda, çıkış örneğindeki işlem kimliği verilmiştir. Bu bilgi,
"name"ile başlayan çıkış satırında bulunabilir."operation-1661405972853-5e70a38d6f27f-79100d00-310671b4" - Durum: Durumun
"done": false'den"done": true'e değişmesini beklememiz gerekiyor.
Durumu kontrol etme
Devam etmeden önce giriş uç noktasının başarıyla oluşturulduğunu ve hazır olduğunu kontrol etmemiz gerekir.
Aşağıdaki komutta <OPERATION> yerine az önce aldığımız İşlem kimliğini girin. Bu örnekte "operation-1661405972853-5e70a38d6f27f-79100d00-310671b4".
Command
export OPERATION_ID_1=<OPERATION>
Command
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"
Çıkış örneği
{
"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"
}
}
Giriş uç noktasının oluşturulduğunu ve hazır olduğunu belirten "done:true" simgesini görene kadar komutu yeniden çalıştırın.
URI'yi kaydedin.
Önceki çıkıştan alınan URI değerini laboratuvarın ilerleyen bölümlerinde kullanacağız. Şu anda URI için bir ortam değişkeni ayarlayalım.
Command
export URI=<uri>
<uri> yerine yukarıda not ettiğiniz URI'yi girin. İsteğe bağlı olarak, URI'yi almak için alma yöntemini de kullanabilirsiniz.
Command
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. Canlı yayın kanalını oluşturma ve yapılandırma
Şimdi de önceki bölümde oluşturduğumuz giriş uç noktasıyla ilişkili canlı yayın kanalını oluşturalım. Aşağıdaki örnekte, tek bir yüksek çözünürlüklü (1280x720) yorumlamadan oluşan bir HLS canlı yayını oluşturan kanal oluşturuluyor. Kanal, giriş uç noktası ve daha önce oluşturduğumuz depolama paketiyle ilişkilendirilir.
channel.json dosyasını oluşturun
Cloud Shell terminalinde, "channel.json" dosyası oluşturmak için aşağıdaki komutu yazın:
Command
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ı oluşturma
Kanalı oluşturmak için aşağıdaki curl komutunu çalıştırın:
Command
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"
Çıkış örneği
{
"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
}
İşlem kimliğini not edin ve kopyalayın. Bu bilgiye sonraki adımlardan birinde ihtiyacımız olacak. Bu bilgi, "name" ile başlayan çıkış satırında bulunabilir.
Durumu kontrol etme
Devam etmeden önce kanalın başarıyla oluşturulduğunu ve hazır olduğunu kontrol etmemiz gerekiyor.
Aşağıdaki komutta <OPERATION> yerine az önce aldığımız İşlem kimliğini girin. Bu örnekte operation-1661405972853-5e70a38d6f27f-79100d00-310671b4
Command
export OPERATION_ID_2=<OPERATION>
Command
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"
Çıkış örneği
"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"
}
}
}
Giriş uç noktasının oluşturulduğunu ve hazır olduğunu belirten "done:true" simgesini görene kadar komutu yeniden çalıştırın.
Şu anda "streamingState" olduğunu unutmayın. Bir sonraki bölümde kanalı başlatacağız."STOPPED"
10. Canlı Yayın Kanalını Başlatma
Canlı yayın kanalımızı oluşturduğumuza göre kanalı başlatalım. Bu bölümde şunları yapacağız:
- Canlı Yayın kanalını başlatma
- Kanalın durumunu kontrol edin.
streamingStatesimgesinin"AWAITING INPUT"olduğundan emin olmanız gerekir.
1. Kanalı başlatma
Cloud Shell'de, kanalı başlatmak için aşağıdaki curl komutunu çalıştırın:
Command
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"
Çıkış örneği
{
"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. Kanalın durumunu kontrol etme
Kanalın durumunu almak için aşağıdaki curl komutunu çalıştırın:
Command
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"
Çıkış örneği
"streamingState": "AWAITING_INPUT",
Kanalın çalıştığını ve sinyal almaya hazır olduğunu belirten "AWAITING_INPUT" ifadesini görene kadar komutu yeniden çalıştırın.
11. Media CDN'yi yapılandırma
Bu bölümde, CDN altyapısı olan Media CDN'yi dağıtacağız. Aşağıdaki kaynakları oluşturacağız:
- Edge Cache Origin
- Edge Cache Service
1. Edge Cache Origin oluşturma
Edge Cache Origin, bir içerik konumunu (ör. Cloud Storage paketi, üçüncü taraf depolama konumu veya yük dengeleyici) temsil eder. CDN terimleriyle, kaynak (veya kaynak sunucu), dağıtmak istediğimiz içeriğin kaynağının bulunduğu konumdur (ör.tüm CSS, JavaScript, HTML, resimler vb.). Bu laboratuvarda, laboratuvarın başında oluşturduğumuz Cloud Storage paketine eşlenen bir kaynak oluşturacağız. Buna Edge Cache Origin cme-origin adını vereceğiz. CDN'nin kaynağı, tüm kaynak içeriğin uç önbellek sunucularına dağıtılmadan önce depolandığı yerdir.
Kaynağı oluşturmak için gcloud edge-cache origins create komutunu kullanacağız. Komutun tamamlanması birkaç dakika sürer.
Command
gcloud edge-cache origins create cme-origin \ --origin-address="gs://live-streaming-storage-$LOGNAME"
Örnek Çıkış
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 Service oluşturma
Artık bir Edge Cache Origin'imiz olduğuna göre Edge Cache Service'i oluşturabiliriz.
cme-demo.yaml dosyasını oluşturma
Edge Cache Service yapılandırması YAML dosyası aracılığıyla yapılır. Cloud Shell'de cme-demo.yaml adlı bir yerel dosya oluşturun. vi, nano veya başka bir düzenleyiciyi kullanarak aşağıdaki satırları YAML dosyasına yapıştırın:
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
Tüm Edge Cache Service yapılandırma varsayılanlarını değiştirmeden bırakacağız. Yukarıdaki dosyada, kullanıcıların güncellemek isteyebileceği 3 alan değeri vardır:
name: Media CDN örneğinin adı (burada:cme-demo)hosts:Bu Media CDN Hizmeti tarafından çözümlenecek alan adlarının listesi - burada:demo.cme.com. Bu demoda bu bilgiyi kullanacağız. Media CDN örneğinin IP adresini kullanırız.Origin:Bu, önceki adımda oluşturduğumuz Edge Cache Origin'dir.cme-origin- Media CDN kaynağının adı olarak ayarlayın.
YAML dosyasında kullanabileceğiniz farklı değişkenler hakkında daha fazla bilgi için Edge Cache Service yapılandırma kılavuzuna bakın.
Edge Cache hizmetini oluşturma
Edge Cache Origin cme-origin üzerinde, demo.cme.com ana makinesiyle cme-demo adlı bir Edge Cache Service oluşturacağız. Hizmeti oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:
Command
gcloud edge-cache services import cme-demo \
--source=cme-demo.yaml
Edge Cache Service'in oluşturulması birkaç dakika sürebilir.
Çıkış örneği
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'
Edge Cache Service örneğinin ipv4Addresses bölümünü not edin ve kopyalayın. 34.104.36.157 Bu dosyayı, cme-demo.yaml dosyasını güncellemek ve daha sonra kodu dönüştürülmüş videoyu yayınlamak için kullanırız.
Edge Cache hizmetini güncelleme
Bu noktada, daha sonra videoyu yayınlamak için hizmetin IP'sini kullanabilmek amacıyla Edge Cache Service yapılandırmasını güncellemeniz önerilir. Edge Cache Service YAML dosyası, Edge Cache Service'in istekleri kabul edeceği tüm ana makine adlarını/IP'lerini listelememize olanak tanır. Bu noktada yalnızca demo.cme.com'yı ana makine olarak belirttik. Bu alan için ad çözümlemesi sağlamak üzere bir DNS bölgesi yapılandırabilirsiniz. Ancak daha kolay bir çözüm, IP adresini yaml dosyasındaki ana makine listesine eklemektir. YAML dosyasını tekrar düzenleyin ve aşağıdaki gibi görünmesini sağlayın:
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
Değişikliklerin yansıtılması için YAML dosyasını yeniden içe aktarmamız yeterlidir. Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
Command
gcloud edge-cache services import cme-demo \
--source=cme-demo.yaml
Komutun çıkışını kontrol edin ve IP'nin ana makine listesinde göründüğünü doğrulayın.
Bu noktada Edge Cache Service örneği, ana makine olarak "demo.cme.com" veya IP adresi içeren istekleri kabul eder.
12. Giriş sinyalini oluşturma
Gerekli tüm hizmetleri yapılandırdığımıza göre şimdi canlı yayın giriş sinyalini oluşturalım. Bu bölümde şunları yapacağız:
- Ücretsiz açık kaynaklı bir yazılım olan FFmpeg'i yükleyin.
- Girişe/kanala test canlı sinyali gönderme
1. FFmpeg'i yükleme
FFmpeg, video, ses ve diğer multimedya dosyaları ile akışlarını işlemek için bir dizi kitaplık ve programdan oluşan ücretsiz ve açık kaynaklı bir yazılım projesidir. Cloud Shell terminalinde FFmpeg'i yüklemek için aşağıdaki komutu kullanın:
Command
sudo apt install ffmpeg -y
Yükleme işlemi tamamlandığında sürümünü kontrol ederek FFmpeg'in düzgün şekilde yüklenip yüklenmediğini doğrulayalım:
Command
ffmpeg -version
Çıkış örneği
ffmpeg version 4.3.4-0+deb11u1 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 10 (Debian 10.2.1-6) ...
FFmpeg düzgün şekilde yüklenmiştir.
2. Girişe/kanala canlı yayın sinyali göndermeyi başlatın.
FFmpeg yüklendiğine göre, canlı yayını oluşturmak için giriş uç noktasına bir test giriş akışı göndereceğiz.
Cloud Shell terminalinde, "Giriş Uç Noktasını Oluşturma ve Yapılandırma" bölümünde oluşturduğumuz URI ortam değişkenini kullanarak aşağıdaki komutu çalıştırın.
Command
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \ -acodec aac -vcodec h264 -f flv $URI
FFmpeg'in test canlı sinyalini gönderdiğini görmeniz gerekir. Komut istemi döndürmez. Sinyal, siz durdurana kadar oluşturulur. Laboratuvarın geri kalanında yeni bir Cloud Shell penceresi açmanız gerekir.
13. Yeni Cloud Shell'i açma
Bu noktada, laboratuvara devam etmek için yeni bir Cloud Shell penceresi açmanız gerekir. Çünkü FFmpeg, durdurmak için komuta <CTRL+C> tuşlarına basana kadar kalıcı olarak çalışır ve böylece canlı sinyal üretimi durdurulur.
Mevcut Cloud Shell terminalinin adının yanındaki "+" işaretini tıklayın. Ek bir Cloud Shell penceresi açılır.

Laboratuvarın geri kalanını yeni açılan Cloud Shell penceresinde çalıştırın.
Ortam değişkenlerini ayarlama
Bu yeni bir Cloud Shell olduğundan ortam değişkenlerini tekrar ayarlamamız gerekiyor. Ortam değişkenlerini ayarlamak için source komutunu kullanacağız.
Command
source ~/env_variables.txt
Değişkenlerin ayarlandığını doğrulayın
Gerekli tüm ortam değişkenlerinin ayarlandığını doğrulayalım. Çıkışta toplam 6 ortam değişkeni görmemiz gerekir.
Command
env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME|PROJECT_NUMBER|LOCATION|INPUT_ID|CHANNEL_ID'
Çıkış örneği
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. Canlı sinyalin dönüştürüldüğünü doğrulayın.
Kanala açıklama eklemek için curl çalıştıracağız. Çıkışta streamingState'in "AWAITING_INPUT" değerinden "STREAMING" değerine değiştiğini görmemiz gerekir.
Command
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"
Çıkış JSON dosyası yanıtında, kanalın yayın yaptığını ve canlı sinyalin dönüştürüldüğünü belirten "streamingState": "STREAMING" simgesini görmelisiniz.
Ayrıca, manifest dosyasını ve birkaç TS video segmentini görmemiz gereken paketin içeriğini de doğrulayalım. Laboratuvarın başında oluşturduğumuz ve kod dönüştürülmüş canlı sinyal manifestini ve TS video segmentlerini çıkarmak için Live Streaming API tarafından kullanılan paketin içeriğini listelemek üzere Cloud Shell'de aşağıdaki komutu çalıştırın:
Command
gcloud storage ls --recursive gs://live-streaming-storage-$LOGNAME/**
Çıkış örneği
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 ...
Aşağıdaki bilgileri görürsünüz:
- HLS manifest dosyası:
main.m3u8 - İlgili TS video segmentleri: numaralandırılmış bir dizi dosya
segment-000000000X.ts
Bu noktada şunları tamamlamış oluyoruz:
- Live Streaming API: Canlı sinyal, Live Streaming API aracılığıyla oluşturulur ve bir pakete dönüştürülür.
- Media CDN: Media CDN'nin kaynağı olarak Canlı Yayın depolama paketi ile yapılandırılmış Media CDN.
Sonraki bölümlerde, Edge Cache Service'i doğrulayacak ve ardından Media CDN anycast IP adresini kullanarak transkod edilmiş videoyu yayınlayacağız.
15. Edge Cache Service örneğinin çalıştığını doğrulama
Bu bölümde, Edge Cache Service örneğinin beklendiği gibi çalıştığını doğrulayacağız. Bunu yapmak için Edge Cache Service hizmetinin IP adresini kullanarak Edge Cache Service örneğindeki bir dosyaya erişmeye çalışırız. Bir nesneye ilk kez erişildiğinde henüz önbelleğe alınmamıştır. Bir önbellek MISS gözlemlemeliyiz. İlk istekte nesne, kaynak sunucudan okunur ve uçta önbelleğe alınır. Aynı dosyaya erişmek için yapılan tüm sonraki denemeler, nesne artık uçta önbelleğe alındığından HIT önbelleğini döndürür. Bu davranışı doğrulayalım:
Edge Cache Origin'de depolanan, kod dönüştürülmüş video manifest dosyasına erişmek için Cloud Shell'de aşağıdaki curl komutunu çalıştırın:
Command
curl -svo /dev/null --resolve demo.cme.com:80:<Replace_With_Edge_Cache_IP> \ "http://demo.cme.com/main.m3u8"
Adını çözmek için Edge Cache Service örneğinin IP adresini kullandığımız çözüme dikkat edin. IP'nin, az önce oluşturduğumuz Edge Cache Service örneğinin IP'si olduğu demo.cme.com:<IP> ifadesini kullandığınızdan emin olun.
Çıkışta x-cache-status başlığını bulun.
Çıkış örneği
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
Nesne henüz önbelleğe alınmadığı ve kaynak sunucudan okunduğu için önbellek isabet etmediğini unutmayın.
Şimdi m3u8 dosyası için birden fazla istekte bulunacağız. Her şey doğru şekilde yapılandırılmışsa Media CDN, içeriği önbelleğinden sunmaya başlamalıdır. Aşağıdaki komut 10 curl isteği oluşturur ve yalnızca x-cache-status başlığını yazdırır.
Command
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
Çıkış, hit ve miss önbelleğinin bir karışımı olmalıdır. Çıkışta önbellek isabetleri görüyorsanız Media CDN beklendiği gibi çalışıyor demektir.
Çıkış örneği
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
Nesne artık uçta önbelleğe alındığından önbellek isabetine dikkat edin. Cloud Media Edge Service beklendiği gibi çalışıyor.
16. VLC ile yeniden kodlanmış canlı sinyal videosunu yayınlama
Şimdiye kadar üzerinde çalıştığımız tüm adımları birbirine bağlayıp bir araya getirelim:
- Canlı Yayın API'si tarafından HLS içeriğine dönüştürülen canlı sinyal sonucunu alan
live-streaming-storage-$LOGNAMEadlı bir paket oluşturduk. - Live Streaming API'yi kurduk.
- Canlı Yayın API'si girişini/kanalını besleyen FFmpeg ile bir RTMP canlı sinyali başlattık.
- Canlı sinyalin kanala aktarıldığını ve kanalın
streamingmodunda olduğunu doğruladık. - Elde edilen transkodlanmış dosyaların (manifest + TS segmentleri) oluşturulup
live-streaming-storage-$LOGNAMEpaketinde depolandığını doğruladık. cme-originadlı bir Edge Cache Origin, kaynak olarak GCS paketilive-streaming-storage-$LOGNAMEile ayarlandı.cme-demoadlı bir Edge Cache örneği, kaynağıcme-originolacak şekilde ayarlandı.- Edge Cache Service örneğinin davranışını (önbellekte yok, önbellek isabeti) doğruladık.
Artık kod dönüştürülmüş canlı sinyali Media CDN önbelleği üzerinden yayınlamak için video oynatıcı kullanabiliriz. Bunun için VLC Player'ı kullanacağız. VLC Player, çoğu multimedya dosyasını oynatan ücretsiz ve açık kaynaklı bir platformlar arası multimedya oynatıcı ve çerçevedir. Uyarlanabilir medya biçimlerini (ör. DASH ve HLS) oynatır. Uyarlanabilir akış ilkesini kullanır. Oynatıcı, ağ bağlantınızın kalitesine ve kullanılabilir bant genişliğine göre oynatılan videonun kalitesini ayarlar. Az önce yaptığımız kod dönüştürme işinde varsayılan hazır ayarları kullandık ve "yalnızca" iki kalite oluşturduk: SD ve HD. Videoyu oynatıcıda oynatmaya başladığınızda, ağ bağlantınız yeterince iyiyse videonun SD biçiminde oynatılmaya başladığını ve hızlıca HD biçimine geçtiğini görürsünüz.
Kodu dönüştürülmüş canlı sinyali HLS (yaygın olarak desteklenen Apple video biçimi) olarak yayınlayacağız. İlgili dosya, HLS manifesti olan main.m3u8 olarak adlandırılır. Manifest, TS video segmentlerini gösterir.
VLC Player'ı kullanmak için https://www.videolan.org/vlc/ adresine gidip dizüstü bilgisayarınızın işletim sistemi için bir oynatıcı sürümü indirin. VLC; Windows, MacOSX, Linux, Android ve iOS'te kullanılabilir.

Player'ı dizüstü bilgisayarınıza yükleyip başlatın. Sonraki birkaç adımda oynatıcının MacOSX sürümünü kullanacağız.
Bir videoyu oynatmak için "Dosya" / "Ağı Aç" seçeneğine gidin:

Şunlarla ayarlayabilirsiniz:
- URL: http://<Replace_With_Edge_Cache_IP>/main.m3u8. Bu, yayınlamak istediğimiz videonun URL'si. Bildirim:
- Media CDN örneğinin IP'si:
34.105.35.246. Dağıttığınız Cloud Media Service'in IP'siyle değiştirin. - Manifest video dosyasının yolu: "
/". Bu, kodu dönüştürülmüş canlı sinyal dosyalarını depolamak içinlive-streaming-storage-$LOGNAMEpaketinde kullandığımız yoldur. Buradaki yol, kök yoldur: "/". - Manifest video dosyasının adı: HLS manifest dosyası,
main.m3u8.
"Aç"ı tıklayın. Dönüştürülmüş canlı video oynatılmaya başlar. Video, aşağıdaki ekran görüntüsündeki gibi görünür. Ekranda sayaç 1'er artışlarla ilerler ve sürekli bir bip sesi duyarsınız.
Bu, FFmpeg tarafından oluşturulan, Live Streaming API tarafından HLS'ye dönüştürülen ve Media CDN önbelleği üzerinden sunulan temel bir RTMP test canlı sinyalidir:

İsterseniz diğer HLS ve MPEG DASH oynatıcıları da kullanabilirsiniz. Dikkate alabileceğiniz bazı oynatıcıları aşağıda bulabilirsiniz:
- Quicktime Player: Mac'lerde varsayılan olarak yüklüdür. Aynı şekilde, http://34.104.36.157/main.m3u8 adresine bir ağ bağlantısı açın. IP adresini Edge Cache Service örneğinizin adresiyle değiştirin.
17. Media CDN'yi izleme
KOBİ ekibi tarafından bir Media CDN kontrol paneli şablonu oluşturuldu: https://gist.github.com/elithrar/1c511d00f5cd3736fb2a3897867209c1.
Yüklemek için Cloud Shell penceresinde aşağıdaki komutları çalıştırın:
YAML dosyasını indirin:
curl https://gist.githubusercontent.com/elithrar/1c511d00f5cd3736fb2a3897867209c1/raw/3cb70855304f29e5c06b8d63063196354db0dec3/media-edge-20210208-dashboard --output media-edge-20210208-dashboard.yaml
Cloud Monitoring için kontrol paneli oluşturun:
gcloud monitoring dashboards create --config-from-file media-edge-20210208-dashboard.yaml
Kurulum birkaç dakika sürebilir. Google Cloud Console'a gidin ve 3 çubuk > İşlemler > İzleme > Gösterge Tabloları'nı tıklayın. "Media Edge Metrics" (Medya Edge Metrikleri) adlı bir kontrol paneli görürsünüz. Bunu tıkladığınızda şu metrikleri görürsünüz:

18. Laboratuvar ortamını temizleme
Laboratuvarı tamamladığınız için tebrik ederiz. Bu bölümde, laboratuvar boyunca oluşturduğumuz tüm kaynakları sileceğiz.
FFmpeg sinyalini durdurma:
FFmpeg'in çalıştığı Cloud Shell terminalinde <CTRL+C> tuşuna basın.
Canlı Yayın Kanalını Durdurma:
Command
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"
Canlı yayın kanalını silme:
Command
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"
Canlı Yayın Giriş Uç Noktasını Silme:
Command
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 paketini silin:
Command
gsutil rm -r gs://live-streaming-storage-$LOGNAME
Edge Cache Service örneğini silin:
Command
gcloud edge-cache services delete cme-demo
İstendiğinde "Y" yazarak silme işlemini onaylayın.
Edge Cache Origin'i silme:
Command
gcloud edge-cache origins delete cme-origin
İstendiğinde "Y" yazarak silme işlemini onaylayın.
Özel kontrol panelini silme
Command
gcloud monitoring dashboards delete $(gcloud monitoring dashboards list --filter="displayName:Media Edge Metrics" --format="value(name)")