Halaman ini menunjukkan cara membuat gambar overlay statis di bagian atas live stream. Gambar overlay statis akan tetap ditampilkan selama live stream berlangsung. Anda dapat mengonfigurasi resolusi dan posisi gambar overlay statis.
Menyiapkan autentikasi dan project Google Cloud Anda
Jika Anda belum membuat Project Google Cloud dan kredensial, lihat Sebelum memulai.Mengupload gambar ke bucket Cloud Storage
- Di konsol Google Cloud, buka halaman Browser Cloud Storage.
Buka halaman Browser Cloud Storage - Klik nama bucket Anda untuk membukanya.
- Klik Upload files.
- Pilih file gambar (JPEG atau PNG) untuk diupload dari mesin lokal Anda. Anda dapat menggunakan contoh gambar overlay ini.
Gambar Anda sekarang disimpan di bucket Cloud Storage.
Membuat aset
Aset adalah video atau gambar yang dapat digunakan dengan Live Stream API. Buat aset gambar untuk digunakan sebagai overlay statis.
Untuk membuat aset, gunakan
Metode projects.locations.assets.create
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: project Google Cloud Anda nomor; nomor ini terletak di kolom Project number di Halaman Setelan IAMLOCATION
: lokasi untuk membuat asset; menggunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
ASSET_ID
: ID yang ditentukan pengguna untuk aplikasi baru aset yang akan dibuat. Nilai ini harus terdiri dari 1–63 karakter, diawali dan diakhiri dengan[a-z0-9]
, serta dapat berisi tanda hubung (-) di antara karakter. Misalnya,my-asset
.ASSET_URI
: URI gambar di Bucket Cloud Storage yang akan digunakan, sepertigs://my-bucket/my-image.png
Meminta isi JSON:
{ "image": { "uri": "ASSET_URI" } }
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/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Salin teks yang dikembalikan
OPERATION_ID
untuk digunakan di
bagian berikutnya.
Memeriksa hasilnya
Gunakan metode projects.locations.operations.get
untuk memeriksa apakah
aset sudah dibuat. Jika responsnya berisi "done: false"
,
ulangi perintah hingga responsnya berisi "done: true"
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: project Google Cloud Anda nomor; nomor ini terletak di kolom Project number di Halaman Setelan IAMLOCATION
: lokasi aset Anda berlokasi; menggunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
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/assets/ASSET_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Asset", "name": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "image": { "uri": "ASSET_URI" }, "crc32c": "ae1EJg==", "state": "ACTIVE" } }
Membuat endpoint input
Untuk membuat endpoint input, gunakan metode
Metode projects.locations.inputs.create
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: project Google Cloud Anda nomor; nomor ini terletak di kolom Project number di Halaman Setelan IAMLOCATION
: lokasi untuk membuat input endpoint; menggunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: ID yang ditentukan pengguna untuk input baru endpoint yang akan dibuat (tujuan pengiriman stream input Anda). Nilai ini harus terdiri dari 1–63 karakter, diawali dan diakhiri dengan[a-z0-9]
, serta dapat berisi tanda hubung (-) di antara karakter. Misalnya,my-input
.
Isi JSON permintaan:
{ "type": "RTMP_PUSH" }
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 }
Anda dapat memeriksa hasil pembuatan input menggunakan ID operasi baru.
Mendapatkan detail endpoint input
Untuk mendapatkan detail endpoint input, gunakan metode
Metode projects.locations.inputs.get
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: project Google Cloud Anda nomor; nomor ini terletak di kolom Project number di Halaman Setelan IAMLOCATION
: lokasi endpoint input Anda berlokasi; menggunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
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/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
, lalu salin kolom yang ditampilkan
INPUT_STREAM_URI
untuk digunakan nanti di bagian Mengirim aliran data input.
Membuat channel
Untuk membuat channel, gunakan
Metode projects.locations.channels.create
.
Perhatikan array staticOverlays
dalam konfigurasi saluran:
"staticOverlays": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"position": {
"x": 0.5,
"y": 0.5
},
"resolution": {
"w": 0.1
},
"opacity": 0.8
}
],
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: project Google Cloud Anda nomor; nomor ini terletak di kolom Project number di Halaman Setelan IAMLOCATION
: lokasi untuk membuat saluran; menggunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: ID yang ditentukan pengguna untuk saluran guna membuat; nilai ini harus 1-63 karakter, diawali dan diakhiri dengan[a-z0-9]
, serta dapat berisi tanda hubung (-) di antara karakterINPUT_ID
: ID yang ditentukan pengguna untuk endpoint inputBUCKET_NAME
: nama Cloud Storage bucket yang Anda buat untuk menyimpan manifes live stream dan file segmenASSET_ID
: ID yang ditentukan pengguna untuk aset
Meminta isi JSON:
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "staticOverlays": [ { "asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID", "position": { "x": 0.5, "y": 0.5 }, "resolution": { "w": 0.1 }, "opacity": 0.8 }, ], "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": [ { "key": "manifest_hls", "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5 } ] }
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 pembuatan channel menggunakan ID operasi baru.
Memulai channel
Untuk memulai channel, gunakan
Metode projects.locations.channels.start
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: project Google Cloud Anda nomor; nomor ini terletak di kolom Project number di Halaman Setelan IAMLOCATION
: lokasi channel Anda berlokasi; menggunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-northeast1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: ID yang ditentukan pengguna untuk saluran
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 }
Anda dapat memeriksa hasil awal channel menggunakan ID operasi baru.
Mengirim stream input
Buka jendela terminal baru. Jalankan perintah berikut, menggunakan
INPUT_STREAM_URI
dari
Bagian Mendapatkan detail endpoint input:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Memutar live stream yang dibuat
Untuk memutar file media yang dihasilkan di Shaka Player, selesaikan langkah-langkah berikut:
- Buat bucket Cloud Storage yang Anda buat agar dapat dibaca oleh publik.
- Untuk mengaktifkan resource lintas asal
(CORS) di bucket Cloud Storage, lakukan langkah berikut:
- Buat file JSON yang berisi hal berikut:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
Jalankan perintah berikut setelah mengganti
JSON_FILE_NAME
dengan nama file JSON yang Anda buat di langkah sebelumnya:gcloud storage buckets update gs://BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- Buat file JSON yang berisi hal berikut:
- Di bucket Cloud Storage, cari instance
File
main.m3u8
. Klik Copy URL di kolom Public access file. - Buka Shaka Player, pemutar live stream online.
- Klik Konten Kustom di menu navigasi atas.
- Klik tombol +.
Tempel URL publik file ke kotak Manifest URL.
Ketik nama di kotak Nama.
Klik Simpan.
Klik Play.
Anda akan melihat overlay muncul di atas live stream.