1. Giriş
İçerik Yayınlama Ağları (CDN'ler), sıklıkla erişilen içerikleri son kullanıcılara daha yakın bir yerde önbelleğe alma, istemcilere daha yakın olan bağlantıları sonlandırma, kaynağa olan bağlantıları yeniden kullanma ve modern ağ protokolleri ile özelleştirmelerin benimsenmesi yoluyla kullanıcı performansını artırır. Kullanıcılarımız (ve müşterilerimiz) için bu, daha düşük gecikme, daha fazla güvenilirlik ve daha düşük maliyet anlamına gelir. Bu da satışlarda, web deneyiminde iyileşme sağlar ve kullanıcı deneyiminde net bir artış sağlar. Günümüzde CDN olmadan çalışan modern sitelerin ve video akış platformlarının sayısı çok azdır.
Neler öğreneceksiniz?
Bu laboratuvar, Medya 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ını dağıtma adımlarında bize yol gösterecektir.
Live Streaming API bileşenlerini (Giriş, Kanal) ayarlayacak ve FFmpeg ile Giriş/Kanal'da canlı feed başlatacağız (FFmpeg, canlı test sinyali oluşturabilir). Live Streaming API, canlı feed'in kodunu dönüştürür. Kodu dönüştürülmüş video manifesti ve segmentleri bir Cloud Storage paketinde depolanır. Ardından, kaynak olarak canlı video Cloud Storage paketi ile Medya CDN'yi ayarlayacağız. Son olarak, VLC Player, Medya CDN aracılığıyla önbelleğe alınan canlı içeriği oynatmak için kullanılır. Ayrıca Medya CDN'nin etkinliğini görselleştirmek için bir Cloud Monitoring kontrol paneli oluşturacağız.
Oluşturacaklarınız
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ı kodu dönüştürülmüş videoları depolamak için bir Google Cloud Storage (GCS) paketi oluşturun
- Live Streaming API'yi videoyu birden çok biçime dönüştürecek şekilde yapılandırma: HLS + MPEG DASH, SD ve HD
- Canlı Yayın bileşenlerini ayarlama: Giriş/Kanal
- Canlı Yayın Kanalını Başlatma
- Kaynak olarak GCS paketiyle Medya CDN'si ayarlama
- Canlı kanalı beslemek için FFmpeg'i ayarlama
- Kodu dönüştürülmüş canlı feed'i bir video oynatıcıyla yayınlama
- Medya CDN etkinliğini (gecikme, önbellek isabeti, önbellekte olmama vb.) izlemek için Cloud Monitoring kontrol paneli oluşturun
Not: Bu laboratuvarda, kullanıcıların Google Cloud Console'a erişimi olduğunu ve halihazırda proje kurulumuna sahip olduğunu varsayıyoruz. Ayrıca, kullanıcıların yeni bir ortamla başladığını ve bu demo için herhangi bir kurulumları olmadığını varsayıyoruz.
Tüm yapılandırma işlemleri Cloud Shell'de komut satırı üzerinden gerçekleştirilir. Konsoldaki komut satırı aracılığıyla yapılandırılan bileşenleri her zaman kontrol edebiliriz. Laboratuvar süresince Google Cloud Console'a işaret eden işaretçiler göreceğiz.
2. Başlamadan önce
Medya CDN erişimi kısıtlanmış. Medya CDN'ye erişmek için hesap ekibinizle iletişime geçin. Yöneticiniz sizin adınıza erişim isteği oluşturabilir. Google kapsamındaysanız ve Medya CDN ile Canlı Yayın'ı test etmek istiyorsanız Medya CDN'si ile iletişime geçerek Medya CDN'ye erişim isteğinde bulunun.
3. Kurulum ve Gereksinimler
Cloud Shell'i başlatma
Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de 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 bulunan Cloud Shell simgesini tıklayın:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınız tarayıcıda yapılabilir. Herhangi bir şey yüklemeniz gerekmez.
4. Google Cloud SDK sürümü
Yazma sırasında 408.0.0
, Google Cloud SDK'nın en son sürümüdür. 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 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 sonraki bir sürümse sonraki bölüme geçin. - SDK sürümü
408.0.0
sürümünden düşükse aşağıdaki komutu çalıştırarak SDK'yı güncelleyin.
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ğıdaki adımları uygulamamız gerekiyor:
- Ortam değişkenlerini ayarlama
- Gerekli hizmet API'lerini etkinleştirin
1. Ortam Değişkenlerini Ayarlama
Bu laboratuvar boyunca 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'de önceden yapılandırılmıştı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şturun
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.
Yetkiler
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. Çıkışta toplam 6 ortam değişkeni görürüz.
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ştirin
Projemizde aşağıdaki API'lerin etkinleştirildiğinden emin olmamız gerekiyor.
- Network Services API
- Sertifika Yöneticisi API'sı
- Livestream API'si
- Medya CDN Edge Cache API'si
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'sini etkinleştirme
Live Stream API'yi 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ştir
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 Etkin olduğunu doğrulayın
Etkin API'lerin tümünü listelemek için gcloud services list
komutunu çalıştırın. Çıkışta 4 API gösterilir.
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 hâle 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, Medya CDN hizmeti için kaynak depolama alanı da görevi görür.
1. Paketi oluşturma
Paketi oluşturmak için gsutil mb
komutunu kullanacağız:
Komut
gsutil mb gs://live-streaming-storage-$LOGNAME
2. Paketi Herkese Açık hâle getirin
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. Live Streaming API ortamını ayarlama
Live Streaming API zincirinin bileşenleri şu şekilde tasarlanmış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 bir uç noktadır. Yayını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ş uç noktası aracılığıyla giriş akışını besleyen, giriş akışının kodunu birden fazla yoruma dönüştüren 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şturun
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ığı an itibarıyla Live Stream API için gcloud desteği sunulmamaktadır. API çağrıları 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 }
Çıkışta birçok yararlı bilgi bulunuyor, ancak şu anda iki alana odaklanmamız gerekiyor:
- İşlem kimliği: Çıkıştan 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:
"done": false
olan durumun"done": true
olarak değişmesini beklememiz gerekir
Durumu kontrol edin
Devam etmeden önce giriş uç noktasının başarıyla oluşturulduğunu ve hazır olduğunu kontrol etmemiz gerekiyor.
Aşağıdaki komutta <OPERATION>
yerine yukarıda elde ettiğimiz İşlemin kimliğini yazın. Bu örnekte, "operation-1661405972853-5e70a38d6f27f-79100d00-310671b4"
kullanılmıştır.
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"
ifadesini görene kadar komutu yeniden çalıştırın.
URI'yı kaydet
Önceki çıkıştaki URI
öğesini laboratuvarın ilerleyen bölümlerinde kullanacağız. Şu anda URI
için bir ortam değişkeni ayarlayalım.
Komut
export URI=<uri>
<uri>
kısmını yukarıda not ettiğiniz URI ile değiştirin. İsteğe bağlı olarak, URI'yı 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. Oluştur ve Canlı Yayın Kanalını yapılandırma
Bir önceki bölümde az önce oluşturduğumuz giriş uç noktasıyla ilişkilendirilen Canlı Yayın Kanalını oluşturalım. Aşağıdaki örnekte, tek ve yüksek tanımlı (1280x720) bir işlemden oluşan HLS canlı yayını oluşturan bir kanal oluşturulmaktadır. Kanal, giriş uç noktası ve daha önce oluşturduğumuz depolama alanı 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:
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. Sonraki adımlardan birinde bu bilgiye ihtiyacımız olacaktır. Bu, "name"
ile başlayan çıkış satırında bulunabilir.
Durumu kontrol edin
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 yukarıda elde ettiğimiz İşlemin kimliğini yazın. 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"
ifadesini görene kadar komutu yeniden çalıştırın.
Şu anki "streamingState"
öğesinin "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, kanalımıza başlayalım. Bu bölümde şunları yapacağız:
- Canlı Yayın kanalını başlatma
- Kanalın durumunu kontrol edin.
streamingState
öğesinin"AWAITING INPUT"
olduğundan emin olmamız gerekir.
1. Kanalı Başlatma
Kanalı başlatmak için Cloud Shell'de 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 almak 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",
"AWAITING_INPUT
" ifadesini görene kadar komutu yeniden çalıştırın Bu, Kanalın çalıştığını ve sinyal almaya hazır olduğunu gösterir.
11. Medya CDN'yi yapılandırma
Bu bölümde, CDN altyapısı olan Medya CDN'yi dağıtacağız. Aşağıdaki kaynakları oluşturacağız:
- Uç Önbellek Kaynağı
- Uç Önbellek Hizmeti
1. Edge Önbellek Kaynağı Oluşturma
Uç Önbellek Kaynağı; Cloud Storage paketi, üçüncü taraf depolama konumu veya yük dengeleyici gibi bir içerik konumunu temsil eder. CDN terimleriyle, kaynak (veya kaynak sunucu), dağıtmak istediğimiz içeriğin kaynağının bulunduğu konumdur. Örneğin; tüm CSS, JavaScript, HTML, görüntüler vb. bu laboratuvar için laboratuvarın başında oluşturduğumuz Cloud Storage paketiyle eşlenen bir kaynak oluşturacağız. Edge Önbellek 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. Uç Önbellek Hizmeti oluşturma
Uç Önbellek Kaynağı ayarladığımıza göre artık Uç Önbellek Hizmetini oluşturabiliriz.
cme-demo.yaml
dosyasını oluşturun
Uç Önbellek 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 kullanın ve 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
Uç Önbellek Hizmeti yapılandırmalarının tüm varsayılan ayarlarını 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 Medya CDN Hizmeti tarafından çözümlenecek alan adlarının listesini burada bulabilirsiniz:demo.cme.com
. Bu demo sırasında bunu kullanacağız. Media CDN örneğinin IP adresini kullanacağız.Origin:
Bu, önceki adımda az önce oluşturduğumuz Edge Önbellek Kaynağıdır. Bunu, Medya CDN Kaynağının adı olancme-origin
olarak ayarlayın.
YAML dosyasında kullanabileceğiniz farklı değişkenler hakkında daha fazla bilgi için Uç Önbellek Hizmeti yapılandırma kılavuzuna göz atın.
Uç Önbellek Hizmetini oluşturma
demo.cme.com
ana makinesiyle cme-origin
adlı Edge Önbellek Kaynağında cme-demo
adlı bir Uç Önbellek 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 Önbellek Hizmeti'nin 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'
Uç Önbellek Hizmeti örneğinin ipv4Addresses
öğesini not edip kopyalayın (burada 34.104.36.157
). Bunu, cme-demo.yaml
dosyasını güncellemek ve daha sonra, kodu dönüştürülmüş videonun akışını gerçekleştirmek için kullanacağız.
Uç Önbellek Hizmeti'ni güncelleme
Bu noktada, daha sonra video akışı gerçekleştirmek üzere hizmetin IP'sini kullanabilmek için Uç Önbellek Hizmeti yapılandırmasını güncellemek iyi bir fikirdir. Uç Önbellek Hizmeti YAML dosyası, Uç Önbellek Hizmeti'nin istekleri kabul edeceği tüm ana makine adlarını/IP'lerini listelememize olanak tanır. Bu aşamada, ana makine olarak yalnızca demo.cme.com
değerini belirttik. Bu alan için ad çözümlemesi sağlamak üzere bir DNS alt bölgesini bulutta yapılandırırsınız. Ancak, IP adresini yaml
dosyasındaki ana makineler listesine eklemek daha kolay bir çözüm olacaktır. 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
Yalnızca bu değişiklikleri yansıtmak 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 makineler listesinde göründüğünü doğrulayın.
Bu noktada Uç Önbellek Hizmeti örneği, ana makine olarak "demo.cme.com"
veya IP adresi ile yapılan istekleri kabul eder.
12. Giriş sinyalini oluşturun
Gerekli tüm hizmetleri yapılandırdığımıza göre artık canlı yayın giriş sinyalini oluşturalım. Bu bölümde şunları yapacağız:
- Ücretsiz bir açık kaynak yazılım olan FFmpeg'i yükleyin
- Giriş/Kanala test amaçlı bir canlı sinyal gönderin
1. FFmpeg'i yükle
FFmpeg; video, ses ve diğer multimedya dosyaları ile akışları işlemek için bir kitaplık ve program paketinden oluşan ücretsiz ve açık kaynak bir yazılım projesidir. Cloud Shell terminalinde aşağıdaki komutu kullanarak FFmpeg'i yükleyin:
Komut
sudo apt install ffmpeg -y
Yükleme tamamlandığında FFmpeg'in düzgün şekilde yüklendiğini doğrulamak için sürümünü kontrol edelim:
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 düzgün şekilde yüklendi.
2. Girişe/Kanala Canlı Yayın Sinyali'ni 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ştur 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 bölümüne bakı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. Bu komut, istemi döndürmez. Siz durdurana kadar sinyal oluşturulur. Laboratuvarın geri kalanında yeni bir Cloud Shell penceresi açmanız gerekecektir.
13. Yeni Cloud Shell'i Aç
FFmpeg <CTRL+C> komutuna kadar kalıcı olarak çalışacağından, bu noktada laboratuvara devam etmek için yeni bir Cloud Shell penceresi açmanız gerekir. komutuyla durdurmanız gerekir.
"+" işaretini tıklayın. işaretini tıklayın. Ek bir Cloud Shell penceresi açar.
Laboratuvarın geri kalanını yeni açılan Cloud Shell penceresinde çalıştırın.
Ortam Değişkenlerini Ayarlama
Bu yeni bir CloudShell olduğundan, ortam değişkenlerini tekrar ayarlamamız gerekir. 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. Çıkışta toplam 6 ortam değişkeni görürüz.
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ürme işleminin yapıldığını doğrulama
Kanalı açıklamak için bir curl
yayınlayacağız. Çıkışta "AWAITING_INPUT"
olan StreamingState değerinin "STREAMING"
olarak değiştiğini görürüz
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örmeniz gerekir. Bu, kanalın yayın yaptığını ve canlı sinyalin kod dönüştürme işleminin yapı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 Live Streaming API tarafından kodu dönüştürülmüş canlı sinyal manifestinin ve TS video segmentlerinin çıkışını almak için kullandığımız paketin içeriğini listelemek için 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ı dosya dizisi
segment-000000000X.ts
Bu noktada aşağıdaki işlemleri tamamladık:
- Live Streaming API: Canlı sinyal, Live Streaming API aracılığıyla oluşturulur ve bir pakete dönüştürülür
- Medya CDN: Medya CDN'nin kaynağı olarak Canlı Yayın depolama paketi ile Medya CDN'si yapılandırıldı.
Sonraki bölümlerde Uç Önbellek Hizmeti'ni doğrulayacağız ve ardından Medya CDN her noktaya yayın IP adresini kullanarak kodu dönüştürülmüş videoyu yayınlayacağız.
15. Uç Önbellek Hizmeti örneğinin çalıştığını doğrulama
Bu bölümde Uç Önbellek Hizmeti örneğinin beklendiği gibi çalıştığını doğrulayacağız. Bunun için Uç Önbellek Hizmeti Hizmeti'nin IP adresini kullanarak Uç Önbellek Hizmeti örneğindeki bir dosyaya erişmeye çalışacağız. Bir nesneye ilk kez erişildiğinde henüz önbelleğe alınmamıştır. Bir önbellek MISS
gözlemlememiz gerekir. İlk istek için nesne kaynaktan okunur ve uçta önbelleğe alınır. Aynı dosyaya erişmeye yönelik aşağıdaki tüm denemeler, nesne artık uçta önbelleğe alındığından bir önbellek HIT
döndürür. Bu davranışı doğrulayalım:
Uç Önbellek Kaynağında depolanan kodu 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"
Uç Önbellek Hizmeti örneğinin adını çözümlemek için IP adresini kullandığımız çözüme dikkat edin. IP'nin, az önce oluşturduğumuz Uç Önbellek Hizmeti örneğinin IP'si olduğu demo.cme.com:<IP>
kullandığınızdan emin olun.
Çıkışta x-cache-status
üstbilgisini 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ığından ve kaynaktan okunduğundan önbelleğin eksik olduğuna dikkat edin.
Şimdi m3u8
dosyası için birden çok istek yapacağız. Her şey doğru yapılandırıldıysa Medya CDN, içeriği önbelleğinden sunmaya başlamalıdır. Aşağıdaki komut 10 curl isteğinde bulunur 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ış, önbellek hit
ve miss
karmalarının bir karışımı olmalıdır. Çıkışta önbellek isabetleri görüyorsanız Medya 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 Medie Edge Hizmeti beklendiği gibi çalışıyor.
16. Kodu dönüştürülmüş canlı sinyal videosunu VLC ile yayınlayın
Bu bölümde noktaları birleştirip şu ana kadar üzerinde çalıştığımız tüm adımları bir araya getiriyoruz:
- Live Streaming API tarafından HLS içeriğine dönüştürülen canlı sinyalin sonucunu alan
live-streaming-storage-$LOGNAME
adlı bir paket oluşturduk. - Live Streaming API'yi kurduk.
- Live Streaming API girişini/kanalını besleyen FFmpeg ile bir RTMP canlı sinyali başlattık.
- Canlı sinyalin kanala beslendiğini ve kanalın
streaming
modunda olduğunu doğruladık. - Sonuçta elde edilen kodu dönüştürülmüş dosyaların (manifest + TS segmentleri) oluşturulup
live-streaming-storage-$LOGNAME
grubunda depolandığı doğrulandı. cme-origin
adlı bir Uç Önbellek Kaynağı, kaynak olaraklive-streaming-storage-$LOGNAME
GCS paketi kullanılarak oluşturuldu.cme-demo
adlı bir Edge Cache örneğinin kaynağıcme-origin
olacak şekilde oluşturuldu.- Uç Önbellek Hizmeti örneğinin davranışını (önbellekte yok, önbellek isabeti) doğruladık.
Şu anda Medya CDN önbelleği üzerinden kodu dönüştürülmüş canlı sinyali yayınlamak için video oynatıcı kullanabileceğimiz bir noktadayız. Bunu yapmak için VLC Oynatıcı'yı kullanacağız. VLC Player, çoğu multimedya dosyasını oynatan ücretsiz ve açık kaynak bir platformlar arası multimedya oynatıcı ve çerçevedir. Uyarlanabilir medya biçimlerini (DASH ve HLS gibi) oynatır. Uyarlanabilir Akış ilkesini kullanır. Ağ bağlantınızın kalitesine ve mevcut bant genişliğine göre oynatıcı, oynatılan videonun kalitesini ayarlar. Az önce yaptığımız kod dönüştürme işleminde, varsayılan hazır ayarları kullandık ve "yalnızca" SD ve HD olmak üzere iki kalite oluşturduk. Videoyu oynatıcıda oynatmaya başladığımızda SD biçiminde oynatmaya başladığını ve ağ bağlantınız yeterince iyiyse hızlı bir şekilde HD biçimine geçtiğini görürsünüz.
Kod dönüştürme işlemi, yaygın olarak desteklenen Apple video biçimi olan HLS'nin canlı sinyalini yayınlayacağız. İlgili dosyanın adı main.m3u8
(HLS manifestidir). Manifest, TS video segmentlerini işaret ediyor.
VLC Player'ı kullanmak için https://www.videolan.org/vlc/ adresine gidin ve dizüstü bilgisayar işletim sisteminize yönelik oynatıcının bir sürümünü indirin. VLC; Windows, MacOSX, Linux, Android ve iOS için kullanılabilir.
Player'ı dizüstü bilgisayarınıza yükleyin ve başlatın. Sonraki birkaç adım için oynatıcının MacOSX sürümünü kullanacağız.
Bir videoyu oynatmak için "Dosya"ya gidin / "Açık Ağ":
Aşağıdakilerle ayarlayın:
- URL: http://<Replace_With_Edge_Cache_IP>/main.m3u8. Bu, akışını gerçekleştirmek istediğimiz videonun URL'sidir. Bildirim:
- Medya CDN örneğinin IP'si:
34.105.35.246
. Dağıttığınız Cloud Media Hizmeti'nin 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-$LOGNAME
grubunda kullandığımız yoldur. Yol, buradaki kök yoludur: "/". - Manifest video dosyasının adı: HLS manifest dosyası,
main.m3u8
.
Sonra "Aç"ı tıklayın. Kodu 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ündeki gibi olacaktır. Ekrandaki sayaç 1'lik artışlarla çalışır ve kesintisiz bir bip sesi duyabilirsiniz.
FFmpeg tarafından oluşturulan, Live Streaming API tarafından HLS'ye dönüştürülmüş ve Medya CDN önbelleği üzerinden sunulan temel bir RTMP testi canlı sinyalidir:
İsterseniz diğer herhangi bir HLS ve MPEG DASH oynatıcıyı kullanabilirsiniz. Üzerinde düşünebileceğiniz bazı örnekler:
- Quicktime oynatıcısı - Mac'lerde varsayılan olarak yüklüdür. Burada da aynı: http://34.104.36.157/main.m3u8 için bir ağ bağlantısı açın. IP adresini, Edge Cache Service örneğinizden biriyle değiştirin.
17. Medya CDN'sini İzleme
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 çubuğu tıklayın > İşlemler > İzleme > Gösterge Tabloları. "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>
tuşuna basın.
Canlı Yayın Kanalını durdurun:
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 silme:
Komut
gsutil rm -r gs://live-streaming-storage-$LOGNAME
Uç Önbellek Hizmeti Örneğini silin:
Komut
gcloud edge-cache services delete cme-demo
"Y" yazarak silme işlemini onaylayın istendiğinde
Uç Önbellek Kaynağını silin:
Komut
gcloud edge-cache origins delete cme-origin
"Y" yazarak silme işlemini onaylayın istendiğinde
Özel Kontrol Paneli'ni silme
Komut
gcloud monitoring dashboards delete $(gcloud monitoring dashboards list --filter="displayName:Media Edge Metrics" --format="value(name)")