Ringkasan
Web Receiver SDK memiliki dukungan native untuk jeda iklan dan iklan pengiring dalam streaming media tertentu. Platform ini menyediakan API untuk menetapkan posisi iklan, sumber iklan,
dan perilaku jeda iklan, serta klip jeda iklan yang terkait. Dalam panduan ini,
Break
mengacu pada interval untuk pemutaran yang berisi satu atau beberapa iklan atau bumper, dan
setiap iklan atau bumper disebut sebagai
BreakClip
.
Jeda ini terkait dengan media yang sedang dimuat atau diputar.
Jenis iklan
Web Receiver SDK mendukung penyisipan iklan sisi klien (CSAI) dan penyisipan iklan yang digabungkan server (SSAI). Iklan gabungan klien dapat ditetapkan secara manual oleh aplikasi atau diekstrak dari file template VAST dan VMAP. Iklan yang digabungkan di server harus ditentukan secara manual sebelum konten dimuat sebagai iklan disematkan, atau secara dinamis selama pemutaran konten sebagai iklan diperluas yang disematkan. Penerapan untuk setiap jenis iklan tersebut dijelaskan secara detail di bawah.
dijahit dengan klien secara manual
Jeda iklan yang digabungkan secara manual oleh klien adalah jenis jeda iklan yang digabungkan
oleh klien dan ditentukan secara manual oleh aplikasi menggunakan
SDK API. Jenis iklan ini tidak disematkan dalam streaming konten utama. BreakClip
harus menyediakan
contentId
yang merupakan URL yang mengarah ke konten iklan, contentType
yang menjelaskan format konten iklan, dan
title
.
Break
harus memiliki
isEmbedded
dan
expanded
yang ditetapkan ke nilai default false
. position
dapat disetel ke jeda iklan pre-roll, mid-roll, atau post-roll (lihat selengkapnya di
bagian penempatan jeda). Saat menyiapkan
iklan untuk diputar, Web Receiver SDK menghasilkan instance pemutar lain untuk memuat
dan memutar konten iklan. Jeda ini memerlukan stitched timeline
dan harus
ditambahkan secara statis (lihat selengkapnya di
bagian penyisipan iklan). Contoh di bawah menunjukkan penerapan dasar iklan yang digabungkan dengan klien secara manual:
// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';
// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;
// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.
VAST
Web Receiver SDK mendukung penambahan iklan VAST (Template Penayangan Iklan Video) standar IAB. Jika disediakan, template XML akan diuraikan untuk membuat klip jeda iklan berikutnya yang digabungkan oleh klien saat memasuki jeda.
Untuk membuat iklan VAST, aplikasi penerima harus membuat
VastAdsRequest
dan menentukannya di properti
vastAdsRequest
BreakClip
. Objek VastAdsRequest
harus memiliki properti adsResponse
(representasi string dari template XML itu sendiri) atau adTagUrl
(URL tempat template XML dihosting) yang ditentukan. Jika URL ditentukan, SDK akan menangani pengambilan template. Break
yang dienkapsulasi mengikuti konvensi untuk iklan yang digabungkan oleh klien. Iklan ini dapat ditambahkan bersama iklan
yang digabungkan dengan klien secara manual pada jeda yang sama atau jeda terpisah untuk
konten yang sama. Contoh di bawah menunjukkan penerapan dasar iklan
VAST:
// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'
// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;
// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.
Saat Break
yang berisi BreakClip
VAST dimasukkan, SDK Penerima Web
akan mengambil secara opsional, lalu mengurai template. Saat mengurai, SDK
akan menghasilkan BreakClip
baru dan mengisinya dengan nilai yang diekstrak dari
template seperti contentId
, contentType
, title
, duration
,
whenSkippable
, dan clickThroughUrl
. id
untuk klip jeda iklan yang dihasilkan
ditetapkan ke GENERATED:N
dengan N
adalah bilangan bulat yang bertambah 1
untuk setiap klip jeda
VAST baru yang dibuat mulai 0
. Iklan yang dihasilkan kemudian ditambahkan ke
array BreakClip
. Setiap id
klip jeda VAST di Break
saat ini
kemudian diganti dengan id
klip jeda iklan yang dihasilkan. Cuplikan
di bawah ini mengilustrasikan perubahan pada
pesan MEDIA_STATUS
yang berkaitan dengan iklan sebelum dan sesudah memasuki jeda tersebut.
Informasi Break
dan BreakClip
sebelum memasuki jeda dengan iklan VAST.
"breaks": [
{
"id": "break_postroll_vast",
"breakClipIds": [
"bc_vast"
],
"position": 0,
"isWatched": false
}
],
"breakClips": [
{
"id": "bc_vast"
}
]
Informasi Break
dan BreakClip
setelah memasuki jeda dengan iklan VAST.
"breaks": [
{
"id": "break_postroll_vast",
"breakClipIds": [
"GENERATED:0"
],
"position": 0,
"isWatched": true
}
],
"breakClips": [
{
"id": "bc_vast"
},
{
"id": "GENERATED:0",
"contentId": "https://example.com/break-clip-1.mpd",
"contentType": "application/dash+xml",
"title": "Ad Title Extracted from Template",
"duration": 10,
"whenSkippable": 5,
"clickThroughUrl": "https://example.com/ad-target"
}
]
VMAP
Web Receiver SDK mendukung standar VMAP (Video Multi-Iklan Playlist) IAB. Saat VMAP disediakan, Web Receiver SDK akan mengurai respons VMAP dan membuat objek Break
yang digabungkan dengan klien untuk setiap entri <AdBreak>
dalam respons. Tindakan ini juga akan menghasilkan BreakClips
yang sesuai dengan
objek vastAdsRequest
untuk setiap entri <AdSource>
yang diberikan di VMAP. Untuk
mengaktifkan VMAP guna menyisipkan iklan ke konten Anda, aplikasi harus membuat
objek VastAdsRequest
dan menetapkannya ke
properti
vmapAdsRequest
dari
MediaInformation
di
LoadRequestData
.
Iklan ini harus disisipkan secara statis (lihat selengkapnya di bagian
penyisipan iklan). Di bawah ini adalah cuplikan yang menguraikan
pembuatan permintaan VMAP.
// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'
// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;
disematkan
Jeda iklan tersemat adalah jenis jeda iklan yang digabungkan sisi server
ke dalam streaming konten utama. Durasi Break
dikurangi
dari durasi konten utama saat menghitung waktu media.
BreakClip
harus menyediakan
duration
konten iklan, dan
title
.
Break
harus
memiliki isEmbedded
yang ditetapkan ke true
dan
expanded
ditetapkan ke false
. position
dapat ditetapkan sebagai jeda iklan pre-roll atau mid-roll. Jeda iklan post-roll
didukung dengan nilai position
persis yang positif. Lihat selengkapnya tentang hal ini di
bagian pemosisian jeda. Saat iklan dipicu untuk
diputar, Web Receiver SDK akan melanjutkan pemutaran streaming saat segmen iklan
disematkan di dalamnya. Tidak ada mekanisme pemuatan tambahan untuk jenis iklan ini.
Metadata iklan yang relevan ditampilkan kepada pengguna setelah titik pemutaran berada dalam
rentang waktu jeda. Jeda ini memerlukan embedded timeline
dan harus ditambahkan
secara statis (lihat selengkapnya di bagian penyisipan iklan). Contoh
di bawah ini menunjukkan penerapan dasar iklan embedded
.
// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;
// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.
tersemat diperluas
Jeda iklan yang diperluas tersemat adalah jenis jeda iklan yang digabungkan dengan sisi server
ke dalam streaming konten utama. Durasi Break
disertakan
dalam durasi konten utama saat menghitung waktu media.
BreakClip
harus menyediakan
duration
konten iklan, dan
title
.
Break
harus
memiliki isEmbedded
yang ditetapkan ke true
dan
expanded
ditetapkan ke true
. position
dapat ditetapkan sebagai jeda iklan pre-roll atau mid-roll. Jeda iklan post-roll
didukung dengan nilai position
positif. Lihat selengkapnya tentang hal ini di
bagian pemosisian jeda. Saat iklan dipicu untuk
diputar, Web Receiver SDK akan melanjutkan pemutaran streaming saat segmen iklan
disematkan di dalamnya. Tidak ada mekanisme pemuatan tambahan untuk jenis iklan ini.
Metadata iklan yang relevan ditampilkan kepada pengguna setelah titik pemutaran berada dalam
rentang waktu jeda. Jeda ini memerlukan embedded timeline
dan dapat ditambahkan
secara statis atau dinamis (lihat selengkapnya di
bagian penyisipan iklan). Contoh di bawah ini menunjukkan penerapan
dasar iklan embedded expanded
:
// Create the BreakClip.
let clipEmbeddedExpanded =
new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;
// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;
Jenis linimasa pemain
Saat membuat instance pemutar, Web Receiver SDK memilih jenis linimasa untuk
mendukung pemutaran iklan selama pemutaran konten. Setiap linimasa memungkinkan penambahan
jenis jeda iklan tertentu. Jenis linimasa ditentukan oleh
jenis iklan yang ada selama waktu pemuatan di
MediaInformation
dari
LoadRequestData
.
Jika jeda iklan yang disematkan ada, linimasa embedded
akan dipilih. Jika terdapat jeda iklan yang digabungkan oleh klien, linimasa stitched
akan dipilih.
Jika tidak ada iklan, SDK akan secara default menggunakan linimasa embedded
. Setelah dipilih, linimasa tidak dapat diubah untuk item
media saat ini. Tabel di bawah memberikan deskripsi mendetail tentang setiap linimasa.
Jenis Linimasa | Deskripsi |
---|---|
linimasa tersemat | Representasi waktu media yang mendukung iklan yang disematkan ke konten utama (jeda iklan disematkan dan diperluas tersemat). Jika ada jeda iklan yang tidak diperluas, durasinya akan dikurangi dari total durasi konten. Di sisi lain, jika ada jeda iklan yang diperluas, waktunya dianggap sebagai bagian dari konten utama. |
linimasa yang digabungkan | Representasi waktu media yang mendukung iklan yang bersumber dari file media eksternal (jeda iklan gabungan klien manual, VAST, dan VMAP). Saat ditambahkan, durasi jeda iklan bukan bagian dari durasi konten utama. |
Gambar 1 sampai 3 di bawah menggambarkan beberapa konten dengan berbagai jenis iklan dan nilai linimasanya masing-masing. Konten dikonfigurasi dengan jeda pre-roll yang berisi dua klip jeda iklan serta jeda mid-roll dan post-roll yang berisi satu klip jeda. Waktu dinding sejak dimulainya pemutaran konten, waktu media konten utama, dan waktu klip jeda yang sedang diputar diselaraskan di bawah setiap gambar.
Jeda posisi
Web Receiver SDK memungkinkan developer menentukan lokasi penempatan jeda iklan dengan menetapkan properti position
dari Break
. Nilai ini sesuai dengan waktu media konten utama
dan dapat digunakan untuk membuat jeda iklan pre-roll
, mid-roll
, dan post-roll
.
Ini didefinisikan sebagai berikut:
Posisi Istirahat | Deskripsi |
---|---|
pre-roll | Jeda iklan yang diputar sebelum konten utama. Hal ini
ditunjukkan dengan menetapkan breakPosition ke 0 |
mid-roll | Jeda iklan yang diputar di tengah konten. Hal ini ditunjukkan dengan
menyetel breakPosition ke waktu saat waktu mulai
jeda lebih besar dari awal konten utama, dan
waktu berakhir jeda kurang dari waktu berakhir konten
utama. |
post-roll | Jeda iklan yang diputar setelah konten utama. Hal ini
ditunjukkan dengan menetapkan breakPosition ke -1 untuk
timeline yang digabungkan. Untuk linimasa
sematan, breakPosition
harus disetel ke durasi konten utama dikurangi
durasi jeda. Tidak didukung untuk konten live. |
Matriks interoperabilitas
Sebagai titik referensi cepat, Tabel 1 menampilkan ringkasan jenis iklan dan kompatibilitasnya dengan fitur terkait iklan.
Dukungan Fitur | iklan yang digabungkan dengan klien secara manual | VAST | VMAP | iklan tersemat | iklan yang diperluas tersemat |
---|---|---|---|---|---|
kompatibel dengan | VAST | dijahit dengan klien secara manual | T/A | tersemat diperluas | disematkan |
rentang waktu | digabungkan | digabungkan | digabungkan | disematkan | disematkan |
penyisipan iklan | static | static | static | static | statis, dinamis |
penghapusan iklan | |||||
iklan pre-roll | |||||
iklan mid-roll | |||||
iklan di akhir video | |||||
lewati iklan | |||||
jeda intersepsi | |||||
memecahkan interseptor beban klip |
Peristiwa
Saat peristiwa jeda tombol terjadi, SDK transmisi akan mengirim peristiwa berjenis
BreaksEvent
.
Aplikasi penerima dapat berlangganan ke API tersebut menggunakan PlayerManager
addEventListener
API.
Peristiwa ini dapat digunakan untuk analisis dan pelacakan pemutaran iklan. Saat iklan VMAP (Playlist Multi-Iklan Video) dan VAST (Template Penayangan Iklan Video) digunakan, semua peristiwa pelacakan standar yang diberikan dalam respons akan otomatis dikirim oleh SDK.
Jenis peristiwa tercantum dalam Tabel 2 beserta deskripsi mendetail tentang kapan pengaktifan.
Peristiwa Jeda | Deskripsi |
---|---|
BREAK_STARTED |
Diaktifkan saat waktu media saat ini untuk konten utama sama dengan position jeda yang belum ditonton. |
BREAK_CLIP_LOADING |
Diaktifkan hanya saat klip jeda linimasa yang digabungkan mulai dimuat. |
BREAK_CLIP_STARTED |
Diaktifkan saat klip jeda memulai pemutaran. |
BREAK_CLIP_ENDED |
Diaktifkan saat klip jeda berakhir.
endedReason
akan diisi untuk keadaan berikut:
|
BREAK_ENDED |
Diaktifkan saat klip jeda terakhir dalam jeda berakhir. |
Penyisipan iklan
SDK transmisi memungkinkan aplikasi menyisipkan dan menghapus iklan pada momen
sesi transmisi yang berbeda. Dua jenis penyisipan iklan adalah statis dan dinamis.
Penyisipan iklan statis mengharuskan iklan ditentukan di
LoadRequestData
sebelum pembuatan pemutar. Penyisipan iklan dinamis menggunakan
BreakManager
addBreak
API untuk menyisipkan jeda dalam konten yang sudah dimuat. Setiap jenis metode
penyisipan kompatibel dengan jenis iklan tertentu. Ringkasan kompatibilitas disediakan dalam matriks interoperabilitas.
Penyisipan iklan statis
Penyisipan iklan statis cirinya dengan menambahkan metadata iklan yang relevan sebelum
pembuatan pemutar. Informasi ini disediakan di
MediaInformation
dari LoadRequestData
. Misalnya, nilai ini dapat ditetapkan dalam permintaan pemuatan asli
pengirim yang terhubung atau dapat disisipkan oleh aplikasi Penerima Web dengan
mencegat permintaan LOAD
. Setelah LoadRequestData
ditampilkan ke
SDK Penerima Web untuk diproses, pemutar akan dibuat. Lihat selengkapnya tentang
memuat media. Contoh di bawah ini menunjukkan iklan yang digabungkan dengan klien secara manual yang ditambahkan dalam interseptor permintaan LOAD
.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, loadRequestData => {
// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.mp4';
clipClient.contentType = 'video/mp4';
// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
'break_postroll_client', ['bc_client'], -1);
// Set the ad information in the load request data.
let media = loadRequestData.media;
media.breakClips = [clipClient];
media.breaks = [breakPostrollClient];
return loadRequestData;
});
Penyisipan iklan dinamis
Penyisipan iklan dinamis ditandai dengan menyetel jeda iklan selama pemutaran
konten. Hal ini dilakukan dengan mendapatkan instance BreakManager
dan memanggil
addBreak
API. Ini memerlukan setidaknya dua parameter, Break
yang diperluas tersemat
dan
array
BreakClip
.
Properti ketiga opsional disertakan untuk memaksa pengiriman perubahan kepada pengirim yang terhubung melalui siaran MediaStatus
saat ditetapkan ke true
. Saat
menambahkan klip jeda dan jeda, ID yang sesuai harus unik. Iklan ini
hanya dapat ditambahkan setelah pemutar dibuat. Web Receiver SDK mengaktifkan
peristiwa
PLAYER_LOADING
setelah pemutar dibuat. Lihat contoh di bawah yang menampilkan penggunaan dalam
pengendali peristiwa yang merespons perubahan dalam metadata ID3 aliran data dan
membuat objek Break
dan BreakClip
untuk memasukkannya ke dalam linimasa.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {
// Create the BreakClip.
let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);
// Add the break and break clip.
breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});
Penghapusan iklan dinamis
Untuk menghapus jeda dinamis, aplikasi harus memanggil
removeBreakById
selama pemutaran. Fungsi ini menggunakan ID string jeda yang akan dihapus dari linimasa. breakId
yang ditentukan harus mengarah ke jeda iklan yang diperluas tersemat. Jika jenis jeda iklan lainnya terdeteksi, jeda tersebut
akan tetap berada di linimasa. Lihat contoh di bawah ini yang menghapus jeda.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.removeBreakById('break_midroll_embedded_expanded');
Perilaku jeda
SDK menentukan perilaku default saat pemain masuk dan keluar
serta menyediakan cara untuk menyesuaikannya lebih lanjut menggunakan beberapa API yang disediakan
di
BreakManager
.
Perilaku jeda default
Saat Break
dimasukkan melalui pemutaran reguler atau dengan mencari melalui Break
,
SDK akan mengevaluasi apakah pengguna telah melihatnya atau belum dengan memeriksa
properti
isWatched
. Saat dibuat, nilai default jeda iklan untuk properti ini adalah false
. Jika
propertinya adalah true
, jeda tidak akan diputar saat dimasukkan dan konten
utama akan terus diputar. Jika propertinya adalah false
, jeda akan diputar saat dimasukkan.
Saat mencari jeda sebelumnya, implementasi default akan memperoleh semua item Break
yang position
-nya berada di antara nilai
seekFrom
dan
seekTo
operasi pencarian. Dari daftar jeda ini, SDK akan memutar Break
yang position
-nya
terdekat dengan nilai seekTo
dan yang properti isWatched
-nya ditetapkan ke
false
. Properti isWatched
jeda iklan tersebut kemudian akan disetel ke true
dan
pemutar akan mulai memutar klip jedanya. Setelah jeda ditonton,
konten utama akan melanjutkan pemutaran dari posisi seekTo
. Jika tidak ada jeda
tersebut, jeda tidak akan diputar dan konten utama akan melanjutkan pemutaran
di posisi seekTo
.
Selama pemutaran jeda, SDK akan menyiarkan update yang relevan ke aplikasi pengirim
yang terhubung di
MediaStatus
.
Aplikasi ini akan menggunakan siaran guna mengupdate UI-nya untuk iklan dengan membaca
properti
breakStatus
. Properti ini hanya ditentukan selama pemutaran jeda.
Aplikasi penerima juga dapat langsung mengkueri informasi yang berkaitan dengan
posisi titik pemutaran sehubungan dengan waktu saat ini dari BreakClip
yang ditampilkan dengan memanggil PlayerManager
getBreakClipCurrentTimeSec
.
Demikian pula, aplikasi dapat mengkueri durasi BreakClip
saat ini dengan
memanggil
getBreakClipDurationSec
.
Perilaku jeda kustom
Perilaku default
untuk klip jeda dan jeda dapat diubah menggunakan metode
setBreakClipLoadInterceptor
dan
setBreakSeekInterceptor
yang disediakan di BreakManager
.
Memecah intersepsi pencari
Interseptor pencarian jeda memungkinkan aplikasi mengontrol perilaku pencarian
pada jeda iklan. Fungsi ini dipicu saat ada permintaan operasi pencarian yang mencari ke depan atau ke belakang melalui satu atau beberapa jeda. Saat dipanggil, BreakSeekData
akan diteruskan sebagai parameter ke fungsi callback. Objek BreakSeekData
berisi array
objek Break
yang properti position
-nya ditetapkan ke angka antara waktu pemutaran
saat ini yang ditentukan sebagai
seekFrom
dan waktu tujuan pencarian
seekTo
.
Interseptor ini memungkinkan objek Break
pada jeda masing-masing untuk
dimodifikasi. Saat diterapkan, interseptor pencari jeda harus menentukan jeda
iklan mana yang akan diputar dengan menampilkan objek BreakSeekData
yang dimodifikasi secara opsional. Pemain
akan melanjutkan pemutaran semua jeda yang disertakan dalam nilai yang ditampilkan. Jika nilai
null
atau tidak ada yang ditampilkan dari interseptor pencari jeda, jeda
akan dilewati.
Lihat contoh di bawah untuk mengetahui penerapan sederhana interseptor yang mengganti perilaku default untuk melihat semua jeda iklan yang dicari dengan pengecualian untuk jeda yang sudah ditonton.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakSeekInterceptor((breakSeekData) => {
// Filter the breaks array by removing watched breaks.
const unwatchedBreaks =
breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
breakSeekData.breaks = unwatchedBreaks;
return breakSeekData;
});
Memecah intersepsi beban klip
Dengan menggunakan interseptor pemuatan klip jeda, objek BreakClip
dapat diubah
sebelum pemutarannya dimulai.
Interseptor pemuatan klip jeda hanya dipanggil untuk
jeda linimasa yang digabungkan
dan dapat ditetapkan menggunakan
setBreakClipLoadInterceptor
.
Sebelum memasukkan Break
, interseptor ini dipanggil satu kali untuk setiap
BreakClip
yang ditentukan dalam jeda tersebut. SDK meneruskan objek BreakClip
asli sebagai parameter fungsi callback. Selanjutnya, aplikasi dapat mengubah
BreakClip
ini dan menampilkannya sehingga SDK dapat mengambil dan menampilkan klip
jeda dengan konfigurasi yang telah diupdate. Jika null
atau tidak ada yang ditampilkan, klip
jeda akan dilewati.
Lihat di bawah untuk contoh yang memodifikasi contentUrl
klip jeda iklan dengan
panggilan fungsi utilitas getUrlFromClipId
dengan id
dari BreakClip
dipetakan ke URL.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakClipLoadInterceptor(
(breakClip, breakClipLoadInterceptorContext) => {
// Obtains the URL of a break clip id from a function call.
breakClip.contentUrl = getUrlFromClipId(breakClip.id);
return breakClip;
});
Iklan Dilewati
Web Receiver SDK menyediakan API untuk melewati jeda iklan dan setiap klip jeda iklan dalam jeda iklan. SDK ini juga memungkinkan pengguna untuk secara opsional melewati klip jeda iklan dengan berinteraksi dengan aplikasi pengirim atau perangkat layar smart.
Klip jeda yang dapat dilewati pengguna
Menyetel klip jeda sebagai dapat dilewati memungkinkan pengguna berinteraksi dengan aplikasi pengirim
yang terhubung dan perangkat layar smart untuk secara opsional melewati klip
jeda yang sedang diputar. Menetapkan properti whenSkippable
ke jumlah detik non-negatif akan mengaktifkan fitur ini untuk objek BreakClip
. Pemutar akan menganggap klip jeda iklan dapat dilewati setelah
klip jeda diputar selama jumlah detik tersebut. Menyetel nilai ini ke 0
memungkinkan pengguna untuk langsung melewati klip jeda.
// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.
Informasi ini dapat ditetapkan dalam permintaan pemuatan asli pengirim atau di aplikasi penerima. Jika dilewati, klip jeda iklan di jeda iklan linimasa yang digabungkan akan berhenti memutar klip jeda saat ini. Pemutar akan memuat klip jeda berikutnya jika ada atau memuat konten utama. Jika dilewati, klip jeda iklan di jeda iklan linimasa tersemat akan mencari ke akhir klip jeda iklan dan melanjutkan pemutaran streaming pada titik tersebut.
Melewati iklan secara terprogram
Iklan juga dapat dilewati secara otomatis tanpa interaksi pengguna.
Untuk melewati seluruh jeda pemutaran, aplikasi harus menetapkan properti
isWatched
dari Break
ke true
. Hal ini dapat dilakukan kapan saja selama urutan
pemuatan atau pemutaran konten. Properti isWatched
dievaluasi oleh
pemain saat position
jeda terpenuhi dalam waktu konten utama saat ini. Pada
saat itu, pemain akan menentukan apakah jeda harus dimasukkan atau tidak.
Lihat contoh di bawah ini yang melakukan loop melalui semua jeda dan mengubah nilai saat pemutar dimuat.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
(event) => {
// Obtain the breaks and iterate through each item to skip all ad breaks.
let breaks = breakManager.getBreaks();
breaks.forEach((brk) => {
brk.isWatched = true;
});
});
Untuk melewati klip jeda iklan tertentu secara terprogram, interseptor pemuatan klip jeda harus digunakan. Dengan
menampilkan null
atau tidak menampilkan nilai dalam fungsi callback, klip dalam
jeda tersebut akan dilewati.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakClipLoadInterceptor(
(breakClip, breakClipLoadInterceptorContext) => {
return null;
});