Live Streaming di Google Cloud dengan Media CDN dan Live Streaming API

1. Pengantar

Jaringan Penayangan Konten (CDN) meningkatkan performa pengguna dengan menyimpan konten yang sering diakses ke dalam cache lebih dekat ke pengguna akhir, mengakhiri koneksi yang lebih dekat dengan klien, menggunakan kembali koneksi ke asal, serta melalui penerapan protokol dan penyesuaian jaringan modern. Bagi pengguna (dan pelanggan kami), ini berarti latensi yang lebih rendah, keandalan yang lebih tinggi, dan biaya yang lebih rendah - yang menghasilkan peningkatan penjualan, pengalaman web, dan peningkatan bersih dalam pengalaman pengguna. Saat ini, sangat sedikit situs dan platform streaming video modern yang beroperasi tanpa CDN.

Yang akan Anda pelajari

Lab ini akan memandu kita melakukan langkah-langkah untuk men-deploy lingkungan alur kerja live streaming dengan Media CDN (CDN) + Cloud Media Live Streaming API (transcoding video live) + Cloud Storage (penyimpanan untuk video) + Pemutar Video (VLC, Google Shaka Player, dll. - Pemutar HLS + MPEG-DASH).

Kita akan menyiapkan komponen Live Streaming API - Input, Channel - dan memulai feed live ke Input/Channel dengan FFmpeg (FFmpeg dapat menghasilkan sinyal pengujian langsung). Live Streaming API akan melakukan transcoding feed live. Manifes dan segmen video yang di-transcoding akan disimpan dalam bucket Cloud Storage. Kemudian, kita akan menyiapkan Media CDN dengan bucket Cloud Storage video live sebagai asal. Terakhir, VLC Player akan digunakan untuk memutar konten live yang di-cache melalui Media CDN. Kita juga akan menyiapkan dasbor Cloud Monitoring untuk memvisualisasikan aktivitas Media CDN.

Yang akan Anda bangun

Di lab ini, kita akan menyiapkan lingkungan berdasarkan arsitektur berikut:

de33cb3e75d52549.png

Kita akan menyiapkan komponen berikut dan melakukan tugas berikut sebagai bagian dari lab:

  • Membuat bucket Google Cloud Storage (GCS) untuk menyimpan video live yang di-transcoding
  • Mengonfigurasi Live Streaming API untuk melakukan transcoding video ke beberapa format: HLS + MPEG DASH, SD, dan HD
  • Menyiapkan komponen Live Streaming: Input/Saluran
  • Memulai Channel Live Stream
  • Siapkan Media CDN dengan bucket GCS sebagai asal
  • Menyiapkan FFmpeg untuk memberikan feed ke saluran live
  • Melakukan streaming feed live yang di-transcoding dengan pemutar video
  • Siapkan dasbor Cloud Monitoring untuk memantau aktivitas Media CDN (latensi, cache ditemukan, cache tidak ditemukan, dll.)

Catatan: Untuk lab ini, kami asumsikan bahwa pengguna memiliki akses ke Google Cloud Console dan sudah memiliki penyiapan project. Kami juga mengasumsikan bahwa pengguna memulai dengan lingkungan baru dan belum menyiapkan apa pun untuk demo ini.

Semua tindakan konfigurasi akan dilakukan melalui command line di Cloud Shell. Kita dapat memeriksa komponen yang dikonfigurasi melalui baris perintah di konsol kapan pun. Kita akan melihat pointer di seluruh lab yang akan mengarah ke Konsol Google Cloud.

2. Sebelum memulai

Akses Media CDN dibatasi. Untuk mendapatkan akses ke Media CDN, hubungi tim akun Anda. Mereka dapat membuat permintaan akses atas nama Anda. Jika Anda adalah bagian dari Google dan ingin menguji Live Streaming dengan Media CDN, hubungi PM untuk Media CDN guna meminta akses ke Media CDN.

3. Penyiapan dan Persyaratan

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

4. Versi Google Cloud SDK

Pada saat penulisan ini, 408.0.0 adalah versi Google Cloud SDK terbaru. Semua perintah di lab ini diuji menggunakan versi terbaru Google Cloud SDK. Sebelum melanjutkan, pastikan Cloud Shell menggunakan SDK versi terbaru.

Memeriksa versi SDK

Kita akan menggunakan perintah gcloud version untuk memeriksa versi SDK.

Perintah

gcloud version | grep "Google Cloud SDK"

Contoh Output

Google Cloud SDK 408.0.0

Langkah Berikutnya

  1. Jika versi SDK adalah 408.0.0 atau lebih tinggi, lanjutkan ke bagian berikutnya.
  2. Jika versi SDK lebih rendah dari 408.0.0, jalankan perintah yang tercantum di bawah ini untuk mengupdate SDK.
sudo apt-get update && sudo apt-get install google-cloud-sdk

5. Prasyarat

Sebelum mulai mengonfigurasi resource GCP, kita perlu melakukan hal berikut -

  1. Menyiapkan variabel lingkungan
  2. Mengaktifkan Service API yang diperlukan

1. Menyiapkan Variabel Lingkungan

Sepanjang lab ini, kita akan menjalankan perintah gcloud dan curl dengan beberapa variabel. Kita perlu mengonfigurasi variabel lingkungan berikut.

  • ID Project
  • Nomor Project
  • Nama Pengguna
  • Wilayah
  • ID Input
  • ID Channel

Project ID dan Nama Pengguna

Variabel lingkungan ini umumnya sudah dikonfigurasi sebelumnya di Cloudshell. Kita akan menggunakan perintah env untuk memverifikasi.

Perintah

env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME'

Contoh Output

DEVSHELL_PROJECT_ID=<YOUR_PROJECT_ID>
LOGNAME=<YOUR_USERNAME>

Membuat File env_variables

Gunakan perintah cat untuk membuat file env_variables.txt. Perintah di bawah akan membuat file env_variables.txt di direktori beranda pengguna.

Perintah

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

Menyiapkan Variabel Lingkungan

Kita akan menggunakan perintah source untuk menetapkan variabel lingkungan

Perintah

source ~/env_variables.txt

Memverifikasi apakah variabel sudah ditetapkan

Mari kita verifikasi bahwa semua variabel lingkungan yang diperlukan telah ditetapkan. Kita akan melihat total 6 variabel lingkungan dalam output.

Perintah

env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME|PROJECT_NUMBER|LOCATION|INPUT_ID|CHANNEL_ID'

Contoh Output

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. Mengaktifkan API Layanan yang Diperlukan

Pastikan bahwa API berikut telah diaktifkan di project kita.

  • API Layanan Jaringan
  • API Pengelola Sertifikat
  • API Livestream
  • Edge Cache API Media CDN

Mengaktifkan Network Services API

Untuk mengaktifkan Network Services API, jalankan perintah berikut:

Perintah

gcloud services enable networkservices.googleapis.com

Mengaktifkan Certificate Manager API

Untuk mengaktifkan Certificate Manager API, jalankan perintah berikut:

Perintah

gcloud services enable certificatemanager.googleapis.com

Mengaktifkan Live Stream API

Untuk mengaktifkan Live Stream API, jalankan perintah berikut:

Perintah

gcloud services enable livestream.googleapis.com

Mengaktifkan Media CDN Edge Cache API

Untuk mengaktifkan Media CDN Edge Cache API, jalankan perintah berikut:

Perintah

gcloud services enable edgecache.googleapis.com

Memverifikasi bahwa API Sudah Aktif

Jalankan perintah gcloud services list untuk menampilkan semua API yang diaktifkan. Kita akan melihat 4 API dalam output.

Perintah

gcloud services list | grep -E 'networkservices|certificatemanager|livestream|edgecache'

Contoh Output

NAME: certificatemanager.googleapis.com
NAME: livestream.googleapis.com
NAME: networkservices.googleapis.com
NAME: edgecache.googleapis.com

6. Membuat Bucket Cloud Storage

Di bagian ini, kita akan melakukan hal berikut:

  1. Membuat bucket Cloud Storage
  2. Menjadikan bucket dapat diakses secara publik

Nanti di lab, kita akan menggunakan bucket ini untuk menyimpan file video yang di-transcoding. Bucket ini juga akan berfungsi sebagai penyimpanan asal untuk layanan Media CDN.

1. Buat bucket

Kita akan menggunakan perintah gsutil mb untuk membuat bucket:

Perintah

gsutil mb gs://live-streaming-storage-$LOGNAME

2. Membuat Bucket Dapat Diakses Publik

Kita akan menggunakan perintah gsutil iam untuk membuat file tersedia secara publik:

Perintah

gsutil iam ch allUsers:objectViewer gs://live-streaming-storage-$LOGNAME

7. Menyiapkan lingkungan Live Streaming API

Komponen rantai Live Streaming API disusun sebagai berikut:

96b5d26aedeb89a6.pngS

Kita telah membuat bucket Cloud Storage live-streaming-storage-$LOGNAME di bagian sebelumnya. Pada dua bagian berikutnya, kita akan membuat referensi berikut:

  • Input Live Streaming: Endpoint input adalah endpoint tempat encoder mengirimkan streaming input Anda. Anda dapat menggunakan endpoint input untuk menentukan konfigurasi streaming, seperti resolusi input, jenis input, dan pemangkasan video.
  • Saluran Live Streaming: Saluran adalah resource yang menyerap streaming input melalui endpoint input, melakukan transcoding streaming input ke beberapa rendisi, dan memublikasikan live stream output dalam format tertentu di lokasi yang ditentukan. Anda dapat menyertakan streaming input utama dan cadangan di saluran yang sama.

Kita akan membuat resource berikut nanti di lab:

  • Encoder: Encoder adalah program yang digunakan untuk mengirim streaming input. Di lab ini, kita akan menggunakan {i>FFmpeg<i}.

8. Membuat dan Mengonfigurasi Endpoint Input

Membuat File input.json

Kita akan membuat file input.json untuk menentukan jenis sinyal live stream. Di lab ini, kami menggunakan sinyal langsung RTMP.

Perintah

cat > input.json << EOF
{
  "type": "RTMP_PUSH"
}
EOF

Membuat Endpoint Input

Saat penulisan lab ini, belum ada dukungan gcloud untuk Live Stream API. Kita akan menggunakan perintah curl untuk melakukan panggilan API.

Perintah

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"

Contoh Output

{
  "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
}

Output memiliki banyak informasi yang berguna, tetapi saat ini, kita perlu berfokus pada dua kolom:

  • ID Operasi: Dari output, salin dan catat ID operasi. Di bawah ini adalah ID operasi dari contoh output. Ini dapat ditemukan pada baris output yang dimulai dengan "name". "operation-1661405972853-5e70a38d6f27f-79100d00-310671b4"
  • Status: Kami harus menunggu status berubah dari "done": false menjadi "done": true

Memeriksa Status

Sebelum melanjutkan, kita perlu memeriksa apakah endpoint input berhasil dibuat dan sudah siap.

Pada perintah di bawah, ganti <OPERATION> dengan ID Operasi yang baru saja kita dapatkan di atas. Dalam contoh ini, variabelnya adalah "operation-1661405972853-5e70a38d6f27f-79100d00-310671b4".

Perintah

export OPERATION_ID_1=<OPERATION>

Perintah

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"

Contoh Output

{
  "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"
  }
}

Jalankan kembali perintah hingga Anda melihat "done:true" yang menunjukkan bahwa Endpoint Input telah dibuat dan siap.

Menyimpan URI

Kita akan menggunakan URI dari output sebelumnya nanti di lab. Pada saat ini, mari kita tetapkan variabel lingkungan untuk URI.

Perintah

export URI=<uri>

Ganti <uri> dengan URI yang baru saja Anda catat di atas. Jika ingin, Anda juga dapat menggunakan metode GET untuk mengambil URI

Perintah

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. Buat & Mengonfigurasi Saluran Live Streaming

Mari kita buat Channel Live Streaming, yang dikaitkan dengan endpoint input yang baru saja dibuat di bagian sebelumnya. Contoh berikut membuat channel yang menghasilkan live stream HLS yang terdiri dari satu versi definisi tinggi (1280x720). Saluran akan dikaitkan dengan endpoint input, dan bucket penyimpanan yang telah kita buat sebelumnya.

Membuat file channel.json

Di terminal Cloud Shell, ketik perintah berikut untuk membuat file "channel.json":

Perintah

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

Membuat Channel

Jalankan perintah curl berikut untuk membuat Saluran:

Perintah

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"

Contoh Output

{
  "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
}

Catat dan salin ID operasi. Kami akan membutuhkannya di salah satu langkah mendatang. Ini dapat ditemukan pada baris output yang dimulai dengan "name".

Memeriksa Status

Sebelum melanjutkan, kami perlu memastikan bahwa channel berhasil dibuat dan sudah siap.

Pada perintah di bawah, ganti <OPERATION> dengan ID Operasi yang baru saja kita dapatkan di atas. Dalam contoh ini operation-1661405972853-5e70a38d6f27f-79100d00-310671b4

Perintah

export OPERATION_ID_2=<OPERATION>

Perintah

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"

Contoh Output

  "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"
    }
  }
}

Jalankan kembali perintah hingga Anda melihat "done:true" yang menunjukkan bahwa Endpoint Input telah dibuat dan siap.

Perhatikan bahwa "streamingState" saat ini adalah "STOPPED" ; kita akan memulai channel itu di bagian berikutnya.

10. Memulai Channel Live Streaming

Setelah membuat channel Live Stream, mari kita mulai channel-nya. Di bagian ini, kita akan melakukan hal berikut:

  1. Memulai channel Live Streaming
  2. Periksa Status saluran, kita perlu memastikan bahwa streamingState adalah "AWAITING INPUT"

1. Mulai Channel

Di Cloud Shell, jalankan perintah curl berikut untuk memulai saluran:

Perintah

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"

Contoh Output

{
  "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. Memeriksa Status Channel

Jalankan perintah curl berikut untuk mendapatkan status Saluran:

Perintah

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"

Contoh Output

"streamingState": "AWAITING_INPUT",

Jalankan kembali perintah hingga Anda melihat "AWAITING_INPUT" yang menunjukkan bahwa Saluran sedang berjalan dan siap untuk menerima sinyal.

11. Mengonfigurasi Media CDN

Di bagian ini, kita akan men-deploy Media CDN - infrastruktur CDN. Kita akan membuat resource berikut:

  1. Asal Cache Edge
  2. Layanan Cache Edge

1. Membuat Asal Cache Edge

Asal Cache Edge mewakili lokasi konten, seperti bucket Cloud Storage, lokasi penyimpanan pihak ketiga, atau load balancer. Dalam istilah CDN, asal (atau server asal) adalah lokasi tempat sumber konten yang ingin kami distribusikan berada - misalnya semua CSS, JavaScript, HTML, gambar, dll. Untuk lab ini, kita akan membuat origin yang memetakan ke bucket Cloud Storage yang telah dibuat di awal lab. Kita akan memanggil Edge Cache Origin cme-origin. Asal CDN adalah tempat semua konten sumber disimpan sebelum didistribusikan ke server edge cache.

Kita akan menggunakan perintah gcloud edge-cache origins create untuk membuat origin. Perintah akan memerlukan waktu beberapa menit untuk diselesaikan.

Perintah

gcloud edge-cache origins create cme-origin \
--origin-address="gs://live-streaming-storage-$LOGNAME"

Contoh Output

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. Membuat Layanan Edge Cache

Setelah menyiapkan Asal Cache Edge, kita dapat membuat Layanan Edge Cache sendiri.

Membuat file cme-demo.yaml

Konfigurasi Layanan Edge Cache dilakukan melalui file YAML. Di Cloud Shell, buat file lokal bernama cme-demo.yaml. Gunakan vi, nano, atau editor lainnya dan tempel baris berikut di file YAML:

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

Kami akan membiarkan semua konfigurasi Layanan Edge Cache ditetapkan secara default. Dalam file di atas, ada 3 nilai kolom yang mungkin ingin diperbarui pengguna:

  • name: nama instance Media CDN - di sini: cme-demo
  • hosts: daftar nama domain yang akan diselesaikan oleh Layanan Media CDN ini - di sini: demo.cme.com. Kita akan menggunakannya selama demo ini. Kita akan menggunakan alamat IP instance Media CDN.
  • Origin: ini adalah Asal Cache Edge yang baru saja kita buat di langkah sebelumnya. Tetapkan ke cme-origin - nama Origin Media CDN.

Untuk informasi selengkapnya tentang berbagai variabel yang dapat Anda gunakan dalam file YAML, lihat panduan konfigurasi Layanan Edge Cache.

Membuat Layanan Edge Cache

Kita akan membuat Layanan Edge Cache bernama cme-demo, di Edge Cache Origin cme-origin, dengan host demo.cme.com. Untuk membuat layanan, jalankan perintah berikut di Cloud Shell:

Perintah

gcloud edge-cache services import cme-demo \
    --source=cme-demo.yaml

Mungkin perlu waktu beberapa menit untuk membuat Layanan Edge Cache.

Contoh Output

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'

Perhatikan dan salin ipv4Addresses instance Edge Cache Service - di sini 34.104.36.157. Kita akan menggunakannya untuk memperbarui file cme-demo.yaml dan melakukan streaming video yang di-transcoding di lain waktu.

Mengupdate Layanan Edge Cache

Di tahap ini, sebaiknya perbarui konfigurasi Layanan Edge Cache agar dapat menggunakan IP layanan untuk melakukan streaming video nanti. File YAML Layanan Cache Edge memungkinkan kita untuk mencantumkan semua nama/IP host yang permintaannya akan diterima oleh Layanan Edge Cache. Pada tahap ini, kami hanya menentukan demo.cme.com sebagai host. Untuk memberikan resolusi nama bagi domain ini, Anda harus mengonfigurasi zona DNS di cloud. Namun, solusi yang lebih mudah adalah menambahkan alamat IP ke daftar host di file yaml. Edit file YAML lagi dan edit agar terlihat seperti di bawah ini:

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

Untuk mencerminkan perubahan, kita hanya perlu mengimpor ulang file YAML. Jalankan perintah berikut di terminal Cloud Shell:

Perintah

gcloud edge-cache services import cme-demo \
    --source=cme-demo.yaml

Periksa output perintah dan pastikan IP muncul dalam daftar host.

Pada tahap ini, instance Layanan Edge Cache akan menerima permintaan yang menggunakan "demo.cme.com" atau alamat IP sebagai host.

12. Membuat Sinyal Input

Setelah mengonfigurasi semua layanan yang diperlukan, mari buat sinyal input live stream. Di bagian ini, kita akan melakukan hal berikut:

  1. Instal FFmpeg, perangkat lunak {i>open source<i} gratis
  2. Mengirim sinyal langsung uji ke Input/Saluran

1. Menginstal FFmpeg

FFmpeg adalah proyek perangkat lunak gratis dan sumber terbuka yang terdiri dari serangkaian library dan program untuk menangani video, audio, serta file dan streaming multimedia lainnya. Di terminal Cloud Shell, gunakan perintah berikut untuk menginstal FFmpeg:

Perintah

sudo apt install ffmpeg -y

Setelah penginstalan selesai, mari kita verifikasi FFmpeg yang diinstal dengan benar dengan memeriksa versinya:

Perintah

ffmpeg -version

Contoh Output

ffmpeg version 4.3.4-0+deb11u1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 10 (Debian 10.2.1-6)
...

FFmpeg diinstal dengan benar.

2. Memulai Sinyal Live Stream ke Input/Channel

Setelah FFmpeg diinstal, kita akan mengirimkan streaming input pengujian ke endpoint input untuk menghasilkan live stream.

Di terminal Cloud Shell, jalankan perintah berikut menggunakan variabel lingkungan URI yang telah dibuat di bagian "Create and Configure the Input Endpoint" bagian.

Perintah

ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
  -acodec aac -vcodec h264 -f flv $URI

Anda akan melihat FFmpeg mengirim sinyal aktif pengujian. Perintah tidak akan menampilkan prompt. Sinyal akan dihasilkan hingga Anda menghentikannya. Anda perlu membuka jendela Cloud Shell baru untuk melanjutkan lab ini.

13. Buka Cloud Shell Baru

Pada tahap ini, Anda harus membuka jendela Cloud Shell baru untuk melanjutkan lab karena FFmpeg akan berjalan secara permanen hingga Anda <CTRL+C> perintah untuk menghentikannya dan dengan demikian menghentikan pembuatan sinyal {i>live<i}.

Klik "+" login di sebelah nama terminal Cloud Shell saat ini. Tindakan ini akan membuka jendela Cloud Shell tambahan.

b3c7b0be6276c194.png

Jalankan sisa lab di jendela Cloud Shell yang baru dibuka.

Menyiapkan Variabel Lingkungan

Karena ini adalah CloudShell baru, kita perlu menyetel variabel lingkungan lagi. Kita akan menggunakan perintah source untuk menetapkan variabel lingkungan.

Perintah

source ~/env_variables.txt

Memverifikasi apakah variabel sudah ditetapkan

Mari kita verifikasi bahwa semua variabel lingkungan yang diperlukan telah ditetapkan. Kita akan melihat total 6 variabel lingkungan dalam output.

Perintah

env | grep -E 'DEVSHELL_PROJECT_ID=|LOGNAME|PROJECT_NUMBER|LOCATION|INPUT_ID|CHANNEL_ID'

Contoh Output

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. Memverifikasi bahwa sinyal live sedang di-transcoding

Kita akan menjalankan curl untuk mendeskripsikan channel. Kita akan melihat dalam output bahwa streamingState berubah dari "AWAITING_INPUT" menjadi "STREAMING"

Perintah

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"

Dalam respons file JSON output, Anda akan melihat "streamingState": "STREAMING" - yang menunjukkan bahwa Channel sedang di-streaming dan sinyal live sedang di-transcoding.

Mari kita verifikasi juga konten bucket tempat kita dapat melihat file manifes dan beberapa segmen video TS. Jalankan perintah berikut di Cloud Shell untuk mencantumkan konten bucket yang telah kita buat di awal lab dan digunakan oleh Live Streaming API untuk menghasilkan output manifes sinyal live dan segmen video TS yang di-transcoding:

Perintah

gcloud storage ls --recursive gs://live-streaming-storage-$LOGNAME/**

Contoh Output

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
...

Anda akan melihat:

  • file manifes HLS: main.m3u8
  • Segmen video TS yang sesuai: serangkaian file bernomor segment-000000000X.ts

Pada tahap ini, kita telah menyelesaikan hal-hal berikut:

  • Live Streaming API: sinyal live dibuat dan di-transcoding ke dalam bucket melalui Live Streaming API
  • Media CDN: mengonfigurasi Media CDN dengan bucket penyimpanan Live Streaming sebagai asal Media CDN.

Di bagian berikutnya, kita akan memvalidasi Layanan Edge Cache, lalu streaming video yang di-transcoding menggunakan alamat IP anycast Media CDN.

15. Memverifikasi bahwa instance Layanan Edge Cache berfungsi

Di bagian ini, kita akan memverifikasi bahwa instance Layanan Edge Cache berfungsi seperti yang diharapkan. Untuk melakukannya, kita akan mencoba mengakses file dari instance Layanan Edge Cache menggunakan alamat IP Layanan Edge Cache. Saat pertama kali diakses, objek belum di-cache. Kita harus mengamati cache MISS. Untuk permintaan pertama, objek dibaca dari asal dan di-cache di edge. Semua upaya berikut untuk mengakses file yang sama akan menampilkan HIT cache karena objek kini di-cache di edge. Mari kita verifikasi perilaku ini:

Jalankan perintah curl berikut di Cloud Shell untuk mengakses file manifes video yang di-transcoding yang disimpan di Asal Cache Edge:

Perintah

curl -svo /dev/null --resolve demo.cme.com:80:<Replace_With_Edge_Cache_IP> \
"http://demo.cme.com/main.m3u8"

Perhatikan penyelesaian di mana kita menggunakan alamat IP instance Layanan Edge Cache untuk me-resolve namanya. Pakailah agar Anda menggunakan demo.cme.com:<IP> dengan IP adalah IP dari instance Layanan Edge Cache yang baru saja kita buat.

Cari header x-cache-status di output.

Contoh Output

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

Perhatikan bahwa cache tidak ditemukan karena objek belum di-cache dan dibaca dari asalnya.

Sekarang kita akan membuat beberapa permintaan untuk file m3u8, dan jika semuanya dikonfigurasi dengan benar, Media CDN akan mulai menyajikan konten dari cache-nya. Perintah di bawah ini akan membuat 10 permintaan curl dan hanya mencetak header x-cache-status.

Perintah

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

Output harus berupa campuran cache hit dan miss. Jika Anda melihat cache ditemukan di output, berarti Media CDN berfungsi seperti yang diharapkan.

Contoh Output

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

Perhatikan hit cache karena objek sekarang di-cache di edge. Layanan Cloud Medie Edge berfungsi seperti yang diharapkan.

16. Melakukan streaming video sinyal live yang di-transcoding dengan VLC

Ini adalah bagian di mana kita menghubungkan titik-titik dan menghubungkan semua langkah yang telah kita kerjakan sejauh ini:

  • Kami membuat bucket bernama live-streaming-storage-$LOGNAME yang menerima hasil sinyal live yang di-transcoding ke konten HLS oleh Live Streaming API.
  • Kami menyiapkan Live Streaming API.
  • Kami memulai sinyal live RTMP dengan FFmpeg yang memberikan feed/Channel pada Live Streaming API.
  • Kami memverifikasi bahwa sinyal live dipasok ke Channel dan memverifikasi bahwa Channel berada dalam mode streaming.
  • Kami telah memverifikasi bahwa file yang di-transcoding yang dihasilkan (segmen manifes + TS) telah dibuat dan disimpan di bucket live-streaming-storage-$LOGNAME.
  • Origin Cache Edge yang disebut cme-origin disiapkan dengan bucket GCS live-streaming-storage-$LOGNAME sebagai origin.
  • Instance Edge Cache bernama cme-demo disiapkan dengan cme-origin sebagai asalnya.
  • Kami memverifikasi perilaku (cache tidak ditemukan, cache ditemukan) dari instance Edge Cache Service.

Sekarang kita dapat menggunakan pemutar video untuk melakukan streaming sinyal langsung yang di-transcoding melalui cache Media CDN. Untuk melakukannya, kita akan menggunakan VLC Player. VLC Player adalah pemutar multimedia dan framework lintas platform gratis dan open source yang dapat memutar sebagian besar file multimedia. Pemutar ini memutar format media adaptif (seperti DASH dan HLS). Pemutaran akan menggunakan prinsip Streaming Adaptif, berdasarkan kualitas koneksi jaringan Anda dan bandwidth yang tersedia, pemutar akan menyesuaikan kualitas video yang diputar. Dengan tugas transcoding yang baru saja dilakukan, kami menggunakan preset default dan menghasilkan dua kualitas "hanya": SD dan HD. Saat kami mulai memutar video di pemutar, Anda akan melihatnya mulai memutar format SD dan segera beralih ke format HD jika koneksi jaringan Anda cukup baik.

Kami akan melakukan streaming sinyal live yang di-transcoding HLS (format video Apple yang didukung secara luas). File yang sesuai disebut main.m3u8 - yang merupakan manifes HLS. Manifes mengarah ke segmen video TS.

Untuk menggunakan VLC Player, buka https://www.videolan.org/vlc/ dan download versi pemutar untuk sistem operasi Laptop Anda - VLC tersedia untuk Windows, MacOSX, Linux, Android, dan iOS.

2a2d19abe728d222.pngS

Instal Pemutar di laptop Anda dan luncurkan. Kita akan menggunakan pemutar versi MacOSX untuk beberapa langkah berikutnya.

Untuk memutar video, buka "File" / "Jaringan Terbuka":

f85565301f7c68dc.png

Siapkan dengan:

  • URL: http://&lt;Replace_With_Edge_Cache_IP&gt;/main.m3u8. Ini adalah URL video yang ingin kita streaming. Pemberitahuan:
  • IP instance Media CDN: 34.105.35.246. Ganti dengan IP Cloud Media Service yang Anda deploy.
  • Jalur ke file video manifes: "/". Ini adalah jalur yang kita gunakan di bucket live-streaming-storage-$LOGNAME untuk menyimpan file sinyal langsung yang di-transcoding. Jalurnya adalah jalur root di sini: "/".
  • Nama file video manifes: file manifes HLS, main.m3u8.

Dan klik "Buka". Anda akan melihat video live yang di-transcoding mulai diputar. Videonya akan terlihat seperti screenshot di bawah. Penghitung di layar akan berjalan dengan kelipatan 1 dan Anda akan dapat mendengar bunyi bip terus menerus.

Ini adalah sinyal live pengujian RTMP dasar yang dihasilkan oleh FFmpeg, di-transcoding ke HLS oleh Live Streaming API dan disajikan melalui cache Media CDN:

28fc359b49d44ec2.pngS

Anda dapat menggunakan pemutar HLS dan MPEG DASH lainnya jika ingin melakukannya. Berikut ini beberapa hal yang mungkin perlu Anda pertimbangkan:

  • Pemutar Quicktime - diinstal secara default di Mac. Caranya sama: buka koneksi jaringan ke http://34.104.36.157/main.m3u8 - ganti alamat IP dengan salah satu instance Edge Cache Service Anda.

17. Memantau Media CDN

Template dasbor Media CDN dibuat oleh tim SME - https://gist.github.com/elithrar/1c511d00f5cd3736fb2a3897867209c1.

Untuk menginstalnya, jalankan perintah berikut di jendela Cloud Shell:

Download file YAML:

curl https://gist.githubusercontent.com/elithrar/1c511d00f5cd3736fb2a3897867209c1/raw/3cb70855304f29e5c06b8d63063196354db0dec3/media-edge-20210208-dashboard --output media-edge-20210208-dashboard.yaml

Buat dasbor untuk Cloud Monitoring:

gcloud monitoring dashboards create --config-from-file media-edge-20210208-dashboard.yaml

Penyiapannya mungkin memerlukan waktu beberapa menit. Buka Google Cloud Console dan klik 3 batang > Operasi > Pemantauan > Dasbor. Anda akan melihat dasbor yang disebut "Media Edge Metrics". Klik itu dan Anda akan melihat metriknya:

d0821d84a88a928d.png

18. Membersihkan Lingkungan Lab

Selamat, Anda telah menyelesaikan lab. Di bagian ini, kita akan menghapus semua resource yang telah dibuat di seluruh lab.

Hentikan sinyal FFmpeg:

Tekan <CTRL+C> di terminal Cloud Shell tempat FFmpeg berjalan.

Menghentikan Channel Live Streaming:

Perintah

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"

Menghapus Channel Live Streaming:

Perintah

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"

Hapus Endpoint Input Live Streaming:

Perintah

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"

Hapus bucket GCS:

Perintah

gsutil rm -r gs://live-streaming-storage-$LOGNAME

Hapus Instance Layanan Edge Cache:

Perintah

gcloud edge-cache services delete cme-demo

Konfirmasi penghapusan dengan memasukkan "Y" saat diminta

Hapus Asal Cache Edge:

Perintah

gcloud edge-cache origins delete cme-origin

Konfirmasi penghapusan dengan memasukkan "Y" saat diminta

Menghapus Dasbor Kustom

Perintah

gcloud monitoring dashboards delete $(gcloud monitoring dashboards list --filter="displayName:Media Edge Metrics" --format="value(name)")