Mendistribusikan live stream ke endpoint jarak jauh

Halaman ini menjelaskan cara mendistribusikan output live stream ke endpoint jarak jauh menggunakan protokol Secure Reliable Transport (SRT) atau Real-Time Messaging Protocol (RTMP). SRT dan RTMP digunakan dalam mode push untuk mengirimkan streaming ke endpoint. Format container yang didukung adalah MPEG-TS untuk SRT dan FLV untuk RTMP.

Sebelum memulai

Halaman ini mengasumsikan bahwa Anda telah menyelesaikan langkah-langkah di bagian Sebelum memulai pada Panduan memulai untuk live stream HLS.

Bergantung pada pilihan protokol distribusi, buat endpoint SRT atau RTMP di penyedia tempat Anda ingin menerima output dalam mode push. Format URI endpoint bervariasi menurut protokol:

  • Untuk SRT: srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID
  • Untuk RTMP: rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/RTMP_STREAM_KEY atau hanya rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME

SRT_SERVER_IP dan RTMP_SERVER_IP dapat berupa alamat IP atau nama domain.

Membuat endpoint input

Untuk membuat endpoint input, gunakan metode projects.locations.inputs.create.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat membuat endpoint input; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: ID yang ditentukan pengguna untuk endpoint input baru yang akan dibuat (tempat Anda mengirimkan aliran input). Nilai ini harus terdiri dari 1-63 karakter, diawali dan diakhiri dengan [a-z0-9], dan dapat berisi tanda hubung (-) di antara karakter. Misalnya, my-input.

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Salin OPERATION_ID yang ditampilkan untuk digunakan di bagian berikutnya.

Periksa hasilnya

Gunakan metode projects.locations.operations.get untuk memeriksa apakah endpoint input telah dibuat. Jika respons berisi "done: false", ulangi perintah hingga respons berisi "done: true". Membuat endpoint input pertama di suatu region dapat memerlukan waktu hingga 10 menit.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat endpoint input Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • OPERATION_ID: ID untuk operasi

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "endTime": END_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input",
    "name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "createTime": CREATE_TIME,
    "updateTime": UPDATE_TIME,
    "type": "RTMP_PUSH",
    "uri":  INPUT_STREAM_URI, # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b",
    "tier": "HD"
  }
}

Temukan kolom uri dan salin INPUT_STREAM_URI yang ditampilkan untuk digunakan nanti di bagian Kirimkan aliran input.

Buat channel

Untuk membuat saluran, gunakan metode projects.locations.channels.create.

Perhatikan hal berikut dalam konfigurasi saluran:

  • Array distributionStreams berisi setelan multipleksing aliran untuk distribusi.
  • Setiap objek DistributionStream harus menyertakan kolom key, container, dan elementaryStreams.

    {
      "distributionStreams": [
        {
          "key": "ds1",
          "container": "ts", // to be used with an SRT distribution
          "elementaryStreams": [
            "es_video_720",
            "es_audio"
          ]
        },
        {
          "key": "ds2",
          "container": "flv", // to be used with an RTMP distribution
          "elementaryStreams": [
            "es_video_640",
            "es_audio"
          ]
        }
      ]
    }
    
  • Array distributions mencantumkan konfigurasi distribusi, yang mencakup endpoint jarak jauh.

  • Tetapkan kolom distributionStream di objek Distribution ke key dari objek DistributionStream.

  • Untuk distribusi SRT, tetapkan uri di objek SrtPushOutputEndpoint ke endpoint SRT yang Anda buat. Untuk distribusi RTMP, tetapkan uri di objek RtmpPushOutputEndpoint ke endpoint RTMP yang Anda buat.

    {
      "distributions": [
        {
          "key": "pd1",
          "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
          "srtPush": {
            "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
          }
        },
        {
          "key": "pd2",
          "distributionStream": "ds2", // defined in a distributionStreams[] object with an FLV container
          "rtmpPush": {
            "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/",
            "streamKey": "RTMP_STREAM_KEY"
          }
        }
      ]
    }
    
  • Untuk mendistribusikan teks yang dibuat AI dan teks yang diterjemahkan, lihat panduan mengonfigurasi teks dan terjemahan otomatis.

Contoh berikut hanya menggunakan satu objek DistributionStream dan satu objek Distribution.

REST

SRT

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat membuat channel; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel yang akan dibuat; nilai ini harus terdiri dari 1-63 karakter, diawali dan diakhiri dengan [a-z0-9], dan dapat berisi tanda hubung (-) di antara karakter
  • INPUT_ID: ID yang ditentukan pengguna untuk endpoint input
  • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat untuk menyimpan file segmen dan manifes live stream
  • SRT_SERVER_IP: alamat IP atau nama domain endpoint jarak jauh
  • SRT_SERVER_PORT: nomor port endpoint jarak jauh
  • SRT_SERVER_STREAM_ID: ID streaming endpoint jarak jauh

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

RTMP

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat membuat channel; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel yang akan dibuat; nilai ini harus terdiri dari 1-63 karakter, diawali dan diakhiri dengan [a-z0-9], dan dapat berisi tanda hubung (-) di antara karakter
  • INPUT_ID: ID yang ditentukan pengguna untuk endpoint input
  • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat untuk menyimpan file segmen dan manifes live stream
  • RTMP_SERVER_IP: alamat IP atau nama domain endpoint jarak jauh
  • RTMP_SERVER_PORT: nomor port endpoint jarak jauh
  • RTMP_APP_NAME: awalan jalur untuk nama aliran
  • RTMP_STREAM_KEY: kunci streaming endpoint jarak jauh

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

Mendapatkan channel

Setelah channel dibuat, gunakan metode projects.locations.channels.get untuk mengkueri status channel.

REST

SRT

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "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",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "ts",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "srtPush": {
        "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
      }
    }
  ]
}

RTMP

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "inputAttachments": [
    {
      "key": "INPUT_ID",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "activeInput": "INPUT_ID",
  "output": {
    "uri": "gs://BUCKET_NAME"
  },
  "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",
      "key": "manifest_hls"
    }
  ],
  "streamingState": "STOPPED",
  "distributionStreams": [
    {
      "key": "ds1",
      "container": "flv",
      "elementaryStreams": [
        "es_video",
        "es_audio"
      ]
    }
  ],
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1",
      "state": "NOT_READY",
      "rtmpPush": {
        "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME",
        "streamKey": "RTMP_STREAM_KEY"
      }
    }
  ]
}

Respons lengkap berisi kolom berikut:

{
  ...
  "streamingState": "STOPPED",
  "distributions": [
    {
      ...
      "state": "NOT_READY"
      ...
    }
  ]
  ...
}

Respons ini menunjukkan status streaming saluran dan distribusi saluran.

Jika distribusi berada dalam NOT_READY status, distribusi tidak dapat dimulai. Anda harus menunggu hingga status berubah menjadi READY agar dapat mulai mendistribusikan streaming.

Pembuatan aliran distribusi pertama dapat memerlukan waktu hingga 10 menit. Status distribusi tidak bergantung pada status saluran; Anda dapat memulai saluran dan menunggu hingga distribusi menjadi READY, lalu memulai distribusi.

Sekarang Anda dapat memulai channel.

Mulai channel

Gunakan metode projects.locations.channels.start untuk memulai channel. Channel harus dimulai sebelum dapat menerima aliran input atau membuat aliran output.

Memulai channel pertama di suatu region memerlukan waktu sekitar 10 menit.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "start",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Untuk menentukan apakah channel telah dimulai, dapatkan informasi channel seperti yang dilakukan sebelumnya. Respons harus berisi hal berikut:

{
  ...
  "streamingState": "AWAITING_INPUT"
  ...
}

Kirimkan aliran input

Buka jendela terminal baru. Jalankan perintah berikut, menggunakan INPUT_STREAM_URI dari bagian Periksa hasilnya:

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

Channel kini melakukan streaming, tetapi distribusi masih dihentikan.

Mulai distribusi

Distribusi harus dalam status READY agar dapat dimulai. Untuk mulai mendistribusikan output live stream ke semua endpoint jarak jauh, gunakan metode projects.locations.channels.startdistribution.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru. Setelah memulai distribusi, distribusi dapat berada dalam status AWAITING_INPUT jika aliran input tidak dimulai atau status DISTRIBUTING jika aliran input didistribusikan ke endpoint yang ditentukan.

(Opsional) Memulai serangkaian distribusi

Anda dapat memulai serangkaian distribusi, bukan semuanya sekaligus. Cantumkan distribusi yang ingin Anda mulai dengan menambahkan kuncinya ke daftar array distributionKeys.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel
  • DISTRIBUTION_KEYS: daftar kunci string yang dipisahkan koma (misalnya, "pd1")

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "startdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

Pastikan distribusi sedang berjalan

Untuk memverifikasi bahwa distribusi telah dimulai, dapatkan informasi saluran seperti yang dilakukan sebelumnya. Respons harus berisi hal berikut:

{
  "distributions": [
    {
      ...
      "state": "DISTRIBUTING"
      ...
    },
    ...
  ]
}

Di server SRT atau RTMP jarak jauh, pastikan endpoint yang Anda buat menerima data.

Hentikan distribusi

Untuk berhenti mendistribusikan output live stream ke semua endpoint jarak jauh, gunakan metode projects.locations.channels.stopdistribution.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

(Opsional) Menghentikan serangkaian distribusi

Anda dapat menghentikan serangkaian distribusi, bukan semuanya sekaligus. Cantumkan distribusi yang ingin Anda hentikan dengan menambahkan kuncinya ke daftar array distributionKeys.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel
  • DISTRIBUTION_KEYS: daftar kunci string yang dipisahkan koma (misalnya, "pd1")

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stopdistribution",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

Dukungan enkripsi SRT

Jika Anda menggunakan protokol SRT untuk mendistribusikan output live stream ke endpoint jarak jauh, Live Stream API melindungi konten live stream Anda dengan enkripsi AES.

Buat frasa sandi dan siapkan server SRT jarak jauh

Sebelum memulai, buat frasa sandi SRT yang sesuai dengan server SRT jarak jauh. Frasa sandi biasanya berupa string 10-79 karakter.

Pastikan proses dekripsi berfungsi dengan menyetel frasa sandi yang sama di server SRT jarak jauh. Lihat panduan pengguna server SRT jarak jauh untuk mengetahui cara melakukannya.

Tambahkan frasa sandi ke Secret Manager

Live Stream API tidak menerima atau mengelola frasa sandi secara langsung. Anda harus membagikan frasa sandi dengan Live Stream API melalui Google Secret Manager.

Anda harus menyelesaikan semua langkah ini sebelum mengonfigurasi channel:

  1. Buat secret dengan Secret Manager.
  2. Konfigurasi izin Identity and Access Management pada rahasia Anda sehingga Live Stream API dapat mengakses konten rahasia. Untuk melakukannya, berikan peran secretmanager.secretAccessor ke akun layanan service-PROJECT_NUMBER@gcp-sa-livestream. (tindakan ini mirip dengan cara akun layanan memiliki akses ke bucket Cloud Storage Anda).
  3. Temukan nama resource versi secret yang Anda buat (misalnya, projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID). Anda memerlukan nama ini untuk mengonfigurasi channel.

Mengonfigurasi channel

Versi rahasia dari frasa sandi ditentukan dalam SrtPushOutputEndpoint:

{
  "distributions": [
    {
      "key": "pd1",
      "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
      "srtPush": {
        "uri": "srt://{SRT_SERVER_IP}:{SRT_SERVER_PORT}?streamid={SRT_SERVER_STREAM_ID}",
        "passphrase_secret_version": "projects/PROJECT_NUMBER/secrets/key1/versions/1"
      }
    }
  ]
}

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan di halaman ini, ikuti langkah-langkah berikut.

Menghentikan channel

Gunakan metode projects.locations.channels.stop untuk menghentikan saluran. Anda harus menghentikan channel sebelum dapat menghapusnya.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "stop",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

Hentikan aliran input

Jika Anda menggunakan ffmpeg untuk mengirimkan aliran input, koneksi akan otomatis terputus setelah Anda menghentikan channel.

Menghapus channel

Gunakan metode projects.locations.channels.delete untuk menghapus channel. Anda harus menghapus channel sebelum dapat menghapus endpoint input yang digunakan oleh channel.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat channel Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • CHANNEL_ID: ID yang ditentukan pengguna untuk channel

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

Menghapus endpoint input

Gunakan metode projects.locations.inputs.delete untuk menghapus endpoint input.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_NUMBER: nomor Google Cloud project Anda; nomor ini ada di kolom Project number di halaman IAM Settings
  • LOCATION: lokasi tempat endpoint input Anda berada; gunakan salah satu region yang didukung
    Tampilkan lokasi
    • us-central1
    • us-east1
    • us-east4
    • us-west1
    • us-west2
    • northamerica-northeast1
    • southamerica-east1
    • asia-east1
    • asia-east2
    • asia-south1
    • asia-northeast1
    • asia-southeast1
    • australia-southeast1
    • europe-north1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
  • INPUT_ID: ID yang ditentukan pengguna untuk endpoint input

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Anda dapat memeriksa hasil operasi menggunakan ID operasi yang baru.

Menghapus bucket Cloud Storage

  1. Di konsol Google Cloud , buka halaman Browser Cloud Storage.

    Membuka halaman Browser Cloud Storage

  2. Pilih kotak centang di samping bucket yang Anda buat.

  3. Klik Hapus.

  4. Di jendela dialog yang muncul, klik Hapus untuk menghapus bucket dan isinya.