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, kaynağa olan bağlantıları yeniden kullanarak ve modern ağ protokollerini ve özelleştirmeleri benimseyerek kullanıcı performansını iyileştirir. Kullanıcılar (ve müşterilerimiz) için bu, daha düşük gecikme süresi, daha fazla güvenilirlik ve daha düşük maliyet anlamına gelir. Bu da satışların, web deneyiminin 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 kod dönüştürme) + Cloud Storage (videolar için depolama alanı) + Video Oynatıcı (VLC, Google Shaka Player vb. - HLS + MPEG-DASH hazır oynatıcı) ile canlı yayın iş akışı ortamı dağıtma adımlarında size yol gösterilecektir.
Canlı Yayın API bileşenlerini (Giriş, Kanal) ayarlayacak ve FFmpeg ile Giriş/Kanal'a canlı feed başlatacağız (FFmpeg canlı test sinyali oluşturabilir). Live Streaming API, canlı feed'i yeniden kodlar. Kod dönüştürülmüş video manifesti ve segmentleri bir Cloud Storage paketinde depolanır. Ardından, kaynak olarak canlı video Cloud Storage paketini kullanarak Media CDN'yi ayarlayacağız. Son olarak, VLC Player, Media CDN aracılığıyla önbelleğe alınan canlı içerikleri oynatmak için kullanılır. Ayrıca, Media CDN'nin etkinliğini görselleştirmek için bir Cloud Monitoring kontrol paneli de oluşturacağız.
Oluşturacağınız uygulama
Bu laboratuvarda ortamı aşağıdaki mimariye göre ayarlayacağız:
Laboratuvar kapsamında aşağıdaki bileşenleri kuracak ve aşağıdaki görevleri gerçekleştireceğiz:
- Canlı olarak kod dönüştürülmüş videoları depolamak için bir Google Cloud Storage (GCS) paketi oluşturun
- Canlı Yayın API'sini, videoyu birden fazla biçime (HLS + MPEG DASH, SD ve HD) kod dönüştürecek şekilde yapılandırın.
- Canlı yayın bileşenlerini ayarlama: Giriş/kanal
- Canlı yayın kanalını başlatma
- Medya CDN'yi kaynak olarak GCS paketiyle ayarlama
- FFmpeg'yi canlı kanala feed verecek şekilde ayarlama
- Kodu dönüştürülmüş canlı feed'i video oynatıcıyla yayınlama
- Media CDN etkinliğini (gecikme, önbellek isabeti, önbellek hatası vb.) izlemek için bir Cloud Monitoring kontrol paneli oluşturun
Not: Bu laboratuvarda, kullanıcıların Google Cloud Console'a erişimi olduğu ve önceden bir proje oluşturdukları varsayılmaktadır. Ayrıca kullanıcıların yeni bir ortamla başladığını ve bu demo için hiçbir şey ayarlamadığını varsayıyoruz.
Tüm yapılandırma işlemleri Cloud Shell'deki komut satırı üzerinden yapılır. Yapılandırılmış bileşenleri dilediğimiz zaman konsoldaki komut satırı üzerinden kontrol edebiliriz. Laboratuvar boyunca Google Cloud Console'a yönlendiren işaretçiler göreceğiz.
2. Başlamadan önce
Medya 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şturabilir. 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 PM'si 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 olsa da bu kod laboratuvarında bulutta ç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 sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:
Bu sanal makinede ihtiyaç duyacağınız tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.
4. Google Cloud SDK sürümü
Bu makalenin yazıldığı sırada en son Google Cloud SDK sürümü 408.0.0
'tür. Bu laboratuvardaki tüm komutlar, Google Cloud SDK'sının en son sürümü kullanılarak test edilmiştir. Devam etmeden önce lütfen Cloud Shell'ın SDK'nın en son 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.
Komut
gcloud version | grep "Google Cloud SDK"
Çıkış Örneği
Google Cloud SDK 408.0.0
Sonraki Adımlar
- SDK sürümü
408.0.0
veya daha yeniyse bir sonraki bölüme geçin. - SDK sürümü
408.0.0
'ten 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 laboratuvarda, gcloud
ve curl
komutlarını birkaç değişkenle ç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 Cloudshell'da önceden yapılandırılır. Doğrulama için env
komutunu kullanacağız.
Komut
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.
Komut
source ~/env_variables.txt
Değişkenlerin ayarlandığını doğrulama
Gerekli tüm ortam değişkenlerinin ayarlandığını doğrulayalım. Çıktıda toplam 6 ortam değişkeni göreceğiz.
Komut
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 gerekiyor.
- 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:
Komut
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:
Komut
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:
Komut
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:
Komut
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. Çıktıda 4 API göreceğiz.
Komut
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 paketini 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, kod 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 kullanılır.
1. Paketi oluşturun
Paketi oluşturmak için gsutil mb
komutunu kullanacağız:
Komut
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:
Komut
gsutil iam ch allUsers:objectViewer gs://live-streaming-storage-$LOGNAME
7. Canlı Yayın API'si ortamını ayarlama
Canlı Yayın API'si zincirinin bileşenleri aşağıdaki şekilde yapılandırılmıştır:
Önceki bölümde live-streaming-storage-$LOGNAME
adlı Cloud Storage paketini oluşturduk. 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. Giriş çözünürlüğü, giriş türü ve video kırpma gibi yayınınızla ilgili yapılandırmaları belirtmek için giriş uç noktasını kullanabilirsiniz.
- Canlı Yayın Kanalı: Kanal, giriş uç noktası üzerinden giriş akışını besleyen, giriş akışını birden fazla şekilde kodlayan ve çıkış canlı yayınlarını belirtilen konumda belirli biçimlerde 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 sinyali türünü belirtmek için bir input.json
dosyası oluşturacağız. Bu laboratuvarda RTMP canlı sinyalini kullanıyoruz.
Komut
cat > input.json << EOF { "type": "RTMP_PUSH" } EOF
Giriş uç noktasını oluşturma
Bu laboratuvarın yazıldığı tarih itibarıyla Canlı Yayın API'si için gcloud desteği yoktur. API çağrılarını yapmak için curl
komutunu kullanacağız.
Komut
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 }
Çıktı çok sayıda yararlı bilgi içeriyor ancak şu anda iki alana odaklanmamız gerekiyor:
- İşlem kimliği: Çıktıda işlem kimliğini kopyalayıp not edin. Aşağıda, çıkış örneğindeki işlem kimliği verilmiştir. Bu,
"name"
ile başlayan çıkış satırında bulunabilir."operation-1661405972853-5e70a38d6f27f-79100d00-310671b4"
- Durum: Durumun
"done": false
yerine"done": true
olarak değişmesini beklememiz gerekiyor.
Durumu kontrol etme
Devam etmeden önce, giriş uç noktasının başarıyla oluşturulup oluşturulmadığını ve hazır olup olmadığını kontrol etmemiz gerekiyor.
Aşağıdaki komutta <OPERATION>
ifadesini, az önce aldığımız İşlem'in kimliğiyle değiştirin. Bu örnekte "operation-1661405972853-5e70a38d6f27f-79100d00-310671b4"
değerini kullanın.
Komut
export OPERATION_ID_1=<OPERATION>
Komut
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 kaydetme
Önceki çıktıdaki URI
değerini laboratuvarın ilerleyen bölümlerinde kullanacağız. Şimdi URI
için bir ortam değişkeni ayarlayalım.
Komut
export URI=<uri>
<uri>
değerini, yukarıda not ettiğiniz URI ile değiştirin. İsteğe bağlı olarak URI'yi almak için GET yöntemini de kullanabilirsiniz.
Komut
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ırması
Ö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) yorumdan oluşan bir HLS canlı yayını oluşturan bir kanal oluşturulmaktadır. Kanal, giriş uç noktası ve daha önce oluşturduğumuz depolama paketiyle ilişkilendirilir.
channel.json dosyasını oluşturma
Cloud Shell terminalinde, "channel.json"
dosyası oluşturmak için aşağıdaki komutu yazın:
Komut
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:
Komut
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, "name"
ile başlayan çıkış satırında bulunabilir.
Durumu kontrol etme
Devam etmeden önce kanalın başarıyla oluşturulup oluşturulmadığını ve hazır olup olmadığını kontrol etmemiz gerekiyor.
Aşağıdaki komutta <OPERATION>
ifadesini, az önce aldığımız İşlem'in kimliğiyle değiştirin. Bu örnekte operation-1661405972853-5e70a38d6f27f-79100d00-310671b4
Komut
export OPERATION_ID_2=<OPERATION>
Komut
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"
değerinin "STOPPED"
olduğunu unutmayın. Kanalı bir sonraki bölümde başlatacağız.
10. Canlı yayın kanalını başlatma
Canlı yayın kanalımızı oluşturduğumuza göre yayına başlayalım. Bu bölümde şunları yapacağız:
- Canlı yayın kanalını başlatma
- Kanalın durumunu kontrol edin.
streamingState
değerinin"AWAITING INPUT"
olduğundan emin olmamız gerekiyor.
1. Kanalı başlatma
Cloud Shell'de kanalı başlatmak için aşağıdaki curl
komutunu çalıştırın:
Komut
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 öğrenmek için aşağıdaki curl
komutunu çalıştırın:
Komut
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ığı ve sinyal almaya hazır olduğunu belirten "AWAITING_INPUT
" simgesini 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ştururuz:
- Edge Önbelleği Kaynağı
- Edge Cache Hizmeti
1. Edge önbelleği kaynağı oluşturma
Edge önbelleği kaynağı, Cloud Storage paketi, üçüncü taraf depolama alanı veya yük dengeleyici gibi bir içerik konumunu temsil eder. CDN terimlerinde kaynak (veya kaynak sunucu), dağıtmak istediğimiz içeriğin kaynağının (ör.tüm CSS, JavaScript, HTML, resimler vb.) bulunduğu konumdur. Bu laboratuvar için, laboratuvarın başında oluşturduğumuz Cloud Storage paketiyle eşleşen bir kaynak oluşturacağız. Edge önbelleği kaynağını cme-origin
olarak adlandıracağız. 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.
Komut
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 Hizmeti oluşturma
Bir Edge Cache kaynağı oluşturduğumuza göre Edge Cache Hizmeti'ni oluşturabiliriz.
cme-demo.yaml
dosyasını oluşturma
Edge Cache hizmeti yapılandırması bir YAML
dosyası aracılığıyla yapılır. Cloud Shell'de cme-demo.yaml
adlı yerel bir 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 Önbelleği Hizmeti yapılandırmalarını varsayılan olarak bırakırı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ülecek alan adlarının listesi (burada:demo.cme.com
). Bu demoda bu özelliği kullanacağız. Medya CDN örneğinin IP adresini kullanırız.Origin:
, önceki adımda oluşturduğumuz Edge önbelleği kaynağıdır. Bu değericme-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
cme-origin
adlı Edge Cache kaynağında, demo.cme.com
ana makinesine sahip cme-demo
adlı bir Edge Cache hizmeti oluşturacağız. Hizmeti oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:
Komut
gcloud edge-cache services import cme-demo \ --source=cme-demo.yaml
Edge önbelleği hizmetinin 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 hizmeti örneğinin ipv4Addresses
değerini not edin ve kopyalayın (burada 34.104.36.157
). Bu kimliği, cme-demo.yaml
dosyasını güncellemek ve daha sonra kod dönüştürülmüş videoyu yayınlamak için kullanırız.
Edge Cache Hizmeti'ni güncelleme
Bu noktada, videoyu daha sonra yayınlamak için hizmetin IP'sini kullanabilmek amacıyla Edge Önbelleği Hizmeti yapılandırmasını güncellemeniz önerilir. Edge Cache Service YAML dosyası, Edge Cache Service'ın istekleri kabul edeceği tüm ana makine adlarını/IP'lerini listelememize olanak tanır. Bu noktada yalnızca demo.cme.com
'ü barındırıcı 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ünecek şekilde düzenleyin:
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:
Komut
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 canlı yayın giriş sinyalini oluşturalım. Bu bölümde şunları yapacağız:
- Ücretsiz ve açık kaynaklı bir yazılım olan FFmpeg'i yükleme
- Giriş/kanala test canlı sinyali gönderme
1. FFmpeg'yi yükleme
FFmpeg, video, ses ve diğer multimedya dosyalarını ve 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:
Komut
sudo apt install ffmpeg -y
Yükleme tamamlandığında FFmpeg'in sürümünü kontrol ederek düzgün şekilde yüklenip yüklenmediğini doğrulayalım:
Komut
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 doğru şekilde yüklendi.
2. Giriş/Kanala Canlı Yayın Sinyali'ni başlatın.
FFmpeg yüklendikten sonra canlı yayın oluşturmak için giriş uç noktasına bir test giriş akışı göndeririz.
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.
Komut
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öreceksiniz. Komut, istemi döndürmez. Sinyal, siz durdurana kadar oluşturulur. Laboratuvarın geri kalanı için yeni bir Cloud Shell penceresi açmanız gerekir.
13. Yeni Cloud Shell'i açma
Bu noktada, FFmpeg <CTRL+C> komutunu kullanarak durdurulana ve dolayısıyla canlı sinyal oluşturma işlemi durdurulana kadar kalıcı olarak çalışacağından laboratuvara devam etmek için yeni bir Cloud Shell penceresi açmanız gerekir.
Geçerli Cloud Shell terminalinin adının yanındaki "+" işaretini tıklayın. Ek bir Cloud Shell penceresi açılır.
Yeni açılan Cloud Shell penceresinde laboratuvarın geri kalanını çalıştırın.
Ortam Değişkenlerini Ayarlama
Bu yeni bir CloudShell olduğundan ortam değişkenlerini tekrar ayarlamamız gerekiyor. Ortam değişkenlerini ayarlamak için source
komutunu kullanacağız.
Komut
source ~/env_variables.txt
Değişkenlerin ayarlandığını doğrulama
Gerekli tüm ortam değişkenlerinin ayarlandığını doğrulayalım. Çıktıda toplam 6 ortam değişkeni göreceğiz.
Komut
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 kod dönüştürüldüğünü doğrulama
Kanalı açıklamak için bir curl
çalıştıracağız. Çıktıda, streamingState değerinin "AWAITING_INPUT"
yerine "STREAMING"
olarak değiştiğini göreceğiz.
Komut
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 "streamingState": "STREAMING"
ifadesini görürsünüz. Bu, kanalın yayın yaptığını ve canlı sinyalin kod dönüştürüldüğünü gösterir.
Ayrıca, bir manifest dosyası ve birkaç TS video segmenti 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 yayınlamak için Canlı Yayın API'si tarafından kullanılan paketin içeriğini listelemek üzere Cloud Shell'de aşağıdaki komutu çalıştırın:
Komut
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: Numaralı bir dosya dizisi
segment-000000000X.ts
Bu noktada aşağıdakileri tamamlamış oluruz:
- Live Streaming API: Canlı sinyal oluşturulur ve Live Streaming API aracılığıyla bir pakete kodlanır.
- Medya CDN: Medya CDN'nin kaynağı olarak Canlı Yayın depolama paketi ile yapılandırılmış Medya CDN.
Sonraki bölümlerde, Edge Önbelleği Hizmeti'ni doğrulayacak ve ardından kod dönüştürülmüş videoyu Media CDN anycast IP adresini kullanarak 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. Bunun için Edge Cache Hizmeti örneğinin IP adresini kullanarak Edge Cache Hizmeti örneğindeki bir dosyaya erişmeye çalışırız. Bir nesneye ilk kez erişildiğinde henüz önbelleğe alınmaz. Bir önbellek MISS
gözlemlememiz gerekir. İlk istek için nesne kaynaktan okunur ve kenarda önbelleğe alınır. Artık nesne uçta önbelleğe alındığından, aynı dosyaya erişmeye yönelik aşağıdaki tüm girişimler bir önbelleği HIT
döndürür. Bu davranışı doğrulayalım:
Edge önbelleği kaynağında 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:
Komut
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, yeni oluşturduğumuz Edge Cache Service örneğinin IP adresidir.demo.cme.com:<IP>
Çıktıda 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 kaynaktan okunduğu için önbelleğin bulunmadığına dikkat edin.
Şimdi m3u8
dosyası için birden fazla istek göndereceğiz. Her şey doğru yapılandırılmışsa Media CDN, içeriği önbelleğinden sunmaya başlayacaktır. Aşağıdaki komut 10 curl isteği gönderir ve yalnızca x-cache-status
başlığını yazdırır.
Komut
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ği karışımı olmalıdır. Çıktıda önbelleğe alınan isabetler görüyorsanız Media CDN beklendiği gibi çalışıyordur.
Çı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 hizmeti beklendiği gibi çalışıyor.
16. VLC ile kod dönüştürülmüş canlı sinyal videosu yayınlama
Bu noktada, noktaları birleştirip şu ana kadar üzerinde çalıştığımız tüm adımları birbirine bağlarız:
- Canlı Yayın API'si tarafından HLS içeriğine kod dönüştürülen canlı sinyalin sonucunu alan
live-streaming-storage-$LOGNAME
adlı bir paket oluşturduk. - Canlı Yayın API'sini oluşturduk.
- FFmpeg ile Live Streaming API girişini/kanalını besleyen bir RTMP canlı sinyali başlattık.
- Canlı sinyalin kanala beslendiğini ve kanalın
streaming
modunda olduğunu doğruladık. - Sonuç olarak elde edilen kod dönüştürülmüş dosyaların (manifest + TS segmentleri) oluşturulduğunu ve
live-streaming-storage-$LOGNAME
paketinde depolandığını doğruladık. - Kaynak olarak
live-streaming-storage-$LOGNAME
GCS paketi ilecme-origin
adlı bir Edge Önbelleği Kaynağı oluşturuldu. cme-demo
adlı bir Edge Cache örneği, kaynağıcme-origin
olacak şekilde ayarlandı.- Edge Cache Hizmeti örneğinin davranışını (önbelleğe alma hatası, önbelleğe alma isabeti) doğruladık.
Artık kod dönüştürülmüş canlı sinyali Media CDN önbelleği üzerinden yayınlamak için bir video oynatıcı kullanabiliyoruz. 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 mevcut 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ığımızda, ağ bağlantınız yeterince iyiyse videonun SD formatta oynatıldığını ve HD formata hızlıca geçtiğini görürsünüz.
Kodu dönüştürülmüş canlı HLS (yaygın olarak desteklenen Apple video biçimi) sinyalini yayınlayacağız. İlgili dosya, HLS manifest'i olan main.m3u8
olarak adlandırılır. Manifest, TS video segmentlerini gösterir.
VLC Oynatıcı'yı kullanmak için https://www.videolan.org/vlc/ adresine gidip dizüstü bilgisayarınızın işletim sistemine uygun bir sürümünü indirin. VLC; Windows, MacOSX, Linux, Android ve iOS için kullanılabilir.
Oynatıcıyı 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.
Video oynatmak için "Dosya" / "Ağ'ı aç"a gidin:
Aşağıdakilerle ayarlayın:
- URL: http://<Replace_With_Edge_Cache_IP>/main.m3u8. Bu, aktarmak istediğimiz videonun URL'sidir. Bildirim:
- Media CDN örneğinin IP'si:
34.105.35.246
. Dağıttığınız Cloud Media Service'in IP adresiyle değiştirin. - Manifest video dosyasının yolu: "
/
". Bu, kod dönüştürülmüş canlı sinyal dosyalarını depolamak içinlive-streaming-storage-$LOGNAME
paketinde kullandığımız yoldur. Yol burada root yoludur: "/". - Manifest video dosyasının adı: HLS manifest dosyası,
main.m3u8
.
Ardından "Aç"ı tıklayın. Kod dönüştürülmüş canlı videonun oynatılmaya başladığını görürsünüz. Video, aşağıdaki ekran görüntüsüne benzer şekilde görünür. Ekrandaki sayaç 1'er artarak çalışır ve sürekli bir bip sesi duyarsınız.
FFmpeg tarafından oluşturulan, Canlı Yayın API'si tarafından HLS'ye kod dönüştürülen ve Media CDN önbelleği üzerinden sunulan temel bir RTMP test canlı sinyalidir:
İsterseniz başka bir HLS ve MPEG DASH oynatıcı kullanabilirsiniz. Kullanabileceğiniz bazı oynatıcıları aşağıda bulabilirsiniz:
- Quicktime Player: Mac'lere varsayılan olarak yüklenir. Burada da aynı: 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
SME ekibi tarafından bir Medya 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 panelini oluşturun:
gcloud monitoring dashboards create --config-from-file media-edge-20210208-dashboard.yaml
Kurulum işlemi birkaç dakika sürebilir. Google Cloud Console'a gidin ve 3 çubuk > İşlemler > İzleme > Kontrol panelleri'ni tıklayın. "Media Edge Metrikleri" adlı bir kontrol paneli görürsünüz. Bunu tıkladığınızda metrikleri görürsünüz:
18. Laboratuvar ortamını temizleme
Laboratuvarı tamamladığınız için tebrikler. 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>
simgesine basın.
Canlı yayın kanalını durdurma:
Komut
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:
Komut
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şi uç noktasını silin:
Komut
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:
Komut
gsutil rm -r gs://live-streaming-storage-$LOGNAME
Edge Cache Hizmeti örneğini silme:
Komut
gcloud edge-cache services delete cme-demo
İstendiğinde "Y" yazarak silme işlemini onaylayın.
Edge önbelleği kaynağını silme:
Komut
gcloud edge-cache origins delete cme-origin
İstendiğinde "Y" yazarak silme işlemini onaylayın.
Özel kontrol panelini silme
Komut
gcloud monitoring dashboards delete $(gcloud monitoring dashboards list --filter="displayName:Media Edge Metrics" --format="value(name)")