Halaman ini menjelaskan cara melihat pratinjau streaming input Anda, dengan latensi yang sangat rendah, untuk mendeteksi potensi masalah atau peristiwa secara hampir real-time. Hal ini memungkinkan Anda mengambil tindakan korektif, seperti menjeda streaming, menyisipkan iklan, atau menampilkan layar, untuk mempertahankan pengalaman menonton berkualitas tinggi bagi penonton Anda.
Konten pratinjau tersedia dalam format berikut:
- Format: MPEG-TS
- Video:
- Resolusi: 640x480
- Codec: H.264
- Kecepatan frame: 25 frame per detik (FPS)
- Audio
- Codec: AAC
- Frekuensi sampling: 48 kHz
- Protokol: HTTPS
Sebelum memulai
Halaman ini mengasumsikan bahwa Anda telah menyelesaikan langkah-langkah di bagian Sebelum memulai dari Panduan memulai untuk live stream HLS.
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 SettingsLOCATION
: lokasi tempat membuat endpoint input; gunakan salah satu region yang didukungTampilkan lokasius-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
.
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 }
Perintah ini membuat operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk melacak progres permintaan Anda. Lihat Mengelola operasi yang berjalan lama untuk mengetahui informasi selengkapnya.
Mendapatkan detail endpoint input
Untuk mendapatkan detail endpoint input, gunakan metode
projects.locations.inputs.get
.
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 SettingsLOCATION
: lokasi tempat endpoint input Anda berada; gunakan salah satu region yang didukungTampilkan lokasius-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/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.
Membuat saluran
Untuk membuat saluran, gunakan metode
projects.locations.channels.create
. Contoh berikut membuat channel yang menghasilkan live stream HLS. Live stream
terdiri dari satu rendering definisi tinggi (1280x720).
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 SettingsLOCATION
: lokasi tempat membuat channel; gunakan salah satu region yang didukungTampilkan lokasius-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 karakterINPUT_ID
: ID yang ditentukan pengguna untuk endpoint inputBUCKET_NAME
: nama bucket Cloud Storage yang Anda buat untuk menyimpan file segmen dan manifes live stream
Meminta isi JSON:
{ "inputAttachments": [ { "key": "my-input", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "output": { "uri": "gs://BUCKET_NAME" }, "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 }
Perintah ini membuat operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk melacak progres permintaan Anda. Lihat Mengelola operasi yang berjalan lama untuk mengetahui informasi selengkapnya.
Mulai channel
Untuk memulai channel, gunakan metode projects.locations.channels.start
.
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 SettingsLOCATION
: lokasi tempat channel Anda berada; gunakan salah satu region yang didukungTampilkan lokasius-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 }
Perintah ini membuat operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk melacak progres permintaan Anda. Lihat Mengelola operasi yang berjalan lama untuk mengetahui informasi selengkapnya.
Menginstal encoder
Untuk menggunakan API, Anda memerlukan encoder untuk membuat aliran input yang diproses oleh API.
Instal ffmpeg
karena halaman ini membahas cara menggunakan ffmpeg
untuk membuat aliran input. Anda dapat menginstalnya di
Cloud Shell menggunakan perintah berikut.
sudo apt install ffmpeg
Kirimkan aliran input
Buka jendela terminal baru. Jalankan perintah berikut, menggunakan INPUT_STREAM_URI dari bagian Mendapatkan detail endpoint input. Perintah ini menghasilkan aliran pengujian.
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \ -acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
Mendapatkan URL endpoint dan token pembawa
Untuk mendapatkan URL endpoint untuk konten pratinjau dan token pembawa yang diperlukan untuk autentikasi, gunakan metode projects.locations.inputs.preview
.
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 SettingsLOCATION
: lokasi tempat endpoint input Anda berada; gunakan salah satu region yang didukungTampilkan lokasius-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:
{ "uri": ENDPOINT_URL, # For example, "preview.k3fhpvei3vvf.us-central1.livestream.goog/inputs/my-preview-input", "bearerToken": "BEARER_TOKEN" }
Anda akan menggunakan nilai dari kolom uri
dan bearerToken
di bagian berikutnya.
Menampilkan konten pratinjau
Anda memiliki opsi utama berikut untuk menampilkan konten pratinjau:
mpegts.js
mpegts.js adalah library yang tersedia di GitHub untuk memutar streaming MPEG-TS di browser web.
Salin nilai dari kolom bearerToken
dan uri
yang Anda terima pada
langkah sebelumnya ke dalam HTML berikut. Buat file HTML dari HTML berikut dan buka di browser.
<html>
<head>
<script src="https://xqq.im/mpegts.js/dist/mpegts.js"></script>
<video id="video" autoplay controls muted></video>
<script>
function main() {
if (!mpegts.getFeatureList().mseLivePlayback) {
console.log("MSE live playback is not supported by the browswer!")
return;
}
var videoElement = document.getElementById("video");
player = mpegts.createPlayer(
{
type: "mse",
isLive: true,
<!-- Placeholder: Replace ENDPOINT_URL with the actual endpoint URL -->
url: "ENDPOINT_URL",
},
{
headers: {
<!-- Placeholder: Replace BEARER_TOKEN with the actual bearer token -->
Authorization: "BEARER_TOKEN",
},
}
);
player.attachMediaElement(videoElement);
player.load();
player.play();
}
main();
</script>
</body>
</html>
Anda akan melihat pola pengujian diputar dengan latensi yang lebih rendah daripada live stream terkait. Pemutar streaming ini hanya dapat memutar trek audio pertama dalam streaming.
FFplay
FFplay adalah pemutar media command line serbaguna yang menggunakan library FFmpeg. Anda dapat menemukan download untuk FFplay dari halaman Download FFmpeg.
Buka jendela terminal baru. Salin nilai dari kolom bearerToken
dan uri
yang Anda terima di langkah sebelumnya ke dalam
perintah berikut, lalu jalankan.
ffplay -headers "Authorization: Bearer BEARER_TOKEN" \ -fflags nobuffer -flags low_delay -probesize 32 -analyzeduration 0 \ ENDPOINT_URL
Anda akan melihat pola pengujian diputar dengan latensi yang lebih rendah daripada live stream terkait. ffplay
mendukung peralihan antara trek audio dengan menekan tombol 'A'.
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 SettingsLOCATION
: lokasi tempat channel Anda berada; gunakan salah satu region yang didukungTampilkan lokasius-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 }
Perintah ini membuat operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk melacak progres permintaan Anda. Lihat Mengelola operasi yang berjalan lama untuk mengetahui informasi selengkapnya.
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 SettingsLOCATION
: lokasi tempat channel Anda berada; gunakan salah satu region yang didukungTampilkan lokasius-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 }
Perintah ini membuat operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk melacak progres permintaan Anda. Lihat Mengelola operasi yang berjalan lama untuk mengetahui informasi selengkapnya.
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 SettingsLOCATION
: lokasi tempat endpoint input Anda berada; gunakan salah satu region yang didukungTampilkan lokasius-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 }
Perintah ini membuat operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk melacak progres permintaan Anda. Lihat Mengelola operasi yang berjalan lama untuk mengetahui informasi selengkapnya.
Menghapus bucket Cloud Storage
Di konsol Google Cloud , buka halaman Browser Cloud Storage.
Pilih kotak centang di samping bucket yang Anda buat.
Klik Hapus.
Di jendela dialog yang muncul, klik Hapus untuk menghapus bucket dan isinya.