Opis
Pakiet Web Deliveryr SDK zapewnia natywną obsługę przerw na reklamy i reklam towarzyszących w obrębie danego strumienia multimediów. Udostępnia on interfejsy API do określania pozycji reklamy, źródła reklam i działania przerw na reklamę oraz powiązanych z nimi klipów. W tym przewodniku Break
oznacza interwał odtwarzania zawierającego co najmniej 1 reklamę lub bumper, a każda reklama i przerywnik są określane jako BreakClip
.
Przerwy są powiązane z multimediami, które są wczytywane lub odtwarzane.
Typy reklam
Pakiet SDK odbiornika internetowego obsługuje wstawianie reklam po stronie klienta (CSAI) i wstawianie reklam połączonych z serwerem (SSAI). Reklamy połączone z klientem można ustawiać ręcznie przez aplikację lub wyodrębniać z plików szablonów VAST i VMAP. Reklamy połączone z serwerem należy określić ręcznie przed wczytaniem treści jako reklamy umieszczone lub dynamicznie podczas odtwarzania treści jako wbudowane reklamy rozwinięte. Implementacje każdego z tych typów reklam znajdziesz szczegółowo poniżej.
ręcznie połączone przez klienta
Przerwa na reklamę ręcznie połączona z klientem jest rodzajem przerwy na reklamę, która jest łączona przez klienta i określana ręcznie przez aplikację za pomocą interfejsów API pakietu SDK. Ten typ reklamy nie jest umieszczony w strumieniu treści głównej. BreakClip
musi zawierać contentId
, czyli adres URL wskazujący treść reklamy, contentType
opisujący format treści reklamy oraz title
.
Break
musi mieć isEmbedded
i expanded
ustawione na wartość domyślną false
. Element position
może być ustawiony na przerwę na reklamę przed filmem, w trakcie filmu lub po filmie (więcej informacji znajdziesz w sekcji pozycjonowanie przerwy na reklamę). Podczas przygotowywania reklamy do odtwarzania pakiet Web pickupr SDK generuje inną instancję odtwarzacza do wczytania i odtworzenia treści reklamy. Te przerwy wymagają użycia funkcji stitched timeline
i należy je dodać statycznie (więcej informacji znajdziesz w sekcji dotyczącej wstawiania reklam). Poniższy przykład przedstawia podstawową implementację reklamy połączonej ręcznie przez klienta:
// 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
Pakiet Web Deliveryr SDK obsługuje dodawanie reklam zgodnych ze standardem IAB VAST (szablon wyświetlania reklamy wideo). Jeśli szablon XML jest podany, jest analizowany w celu wygenerowania następnego klipu przerwy połączonego z klientem po wejściu w interakcję z przerwami.
Aby utworzyć reklamę VAST, aplikacja odbierająca musi utworzyć obiekt VastAdsRequest
i podać go we właściwości BreakClip
vastAdsRequest
. Obiekt VastAdsRequest
musi mieć zdefiniowaną właściwość adsResponse
(czyli ciąg reprezentujący szablon XML) lub adTagUrl
(adres URL, pod którym hostowany jest szablon XML). Jeśli podasz adres URL, pakiet SDK pobierze szablon. Kodowanie elementu Break
jest zgodne z konwencjami reklam połączonych z klientem. Reklamy te można dodawać razem z innymi reklamami ręcznie połączonymi w ramach tej samej przerwy lub w osobnych przerwach na ten sam fragment treści. Poniższy przykład przedstawia podstawową implementację reklamy 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.
Po wpisaniu obiektu Break
z parametrem BreakClip
VAST pakiet SDK dostawcy treści internetowych opcjonalnie pobierze i przeanalizuje szablon. Podczas analizy pakiet SDK wygeneruje nowy BreakClip
i uzupełni go wyodrębnionymi wartościami z szablonu, takimi jak contentId
, contentType
, title
, duration
, whenSkippable
i clickThroughUrl
. Wartość id
wygenerowanego klipu przerwy na reklamę jest ustawiona na GENERATED:N
, gdzie N
to liczba całkowita, która zwiększa się o 1
dla każdego nowego klipu przerwy VAST utworzonego od 0
. Wygenerowana reklama jest następnie dodawana do tablicy BreakClip
. Wartość id
każdego klipu przerwy VAST w bieżącym Break
jest następnie zastępowana odpowiadającym mu id
klipem przerwy Fragmenty kodu poniżej pokazują zmiany w wiadomościach MEDIA_STATUS
, które dotyczą reklam przed taką przerwą i po niej.
Break
i BreakClip
przed rozpoczęciem przerwy w reklamach VAST.
"breaks": [
{
"id": "break_postroll_vast",
"breakClipIds": [
"bc_vast"
],
"position": 0,
"isWatched": false
}
],
"breakClips": [
{
"id": "bc_vast"
}
]
Informacje o wartościach Break
i BreakClip
po przerwie w reklamie 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
Pakiet Web Deliveryr SDK obsługuje standard IAB VMAP (Video Multiple Ad Playlisty). Po udostępnieniu VMAP pakiet SDK Web pickupr przeanalizuje odpowiedź VMAP i wygeneruje połączone z klientem obiekty Break
dla dowolnych wpisów <AdBreak>
w odpowiedzi. Wygeneruje także odpowiedni kod BreakClips
z obiektem vastAdsRequest
dla każdej pozycji <AdSource>
podanej w VAPP. Aby umożliwić wstawianie reklam za pomocą VMAP, aplikacja musi utworzyć obiekt VastAdsRequest
i przypisać go do właściwości vmapAdsRequest
elementu MediaInformation
w obszarze LoadRequestData
.
Reklamy te należy wstawiać statycznie (więcej informacji znajdziesz w sekcji Wstawianie reklam). Poniżej znajdziesz fragment kodu
tworzenia żądania 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;
umieszczony
Umieszczona przerwa na reklamę to typ przerwy na reklamę, który jest połączony po stronie serwera ze strumieniem głównej treści. Czas trwania właściwości Break
jest odejmowany od czasu trwania głównej treści przy obliczaniu czasu odtwarzania treści.
BreakClip
musi zawierać duration
treści reklamy oraz title
.
Break
musi mieć wartość isEmbedded
ustawioną na true
, a expanded
– false
. position
można ustawić jako przerwę na reklamę przed filmem lub w trakcie filmu. Przerwy na reklamę po filmie są obsługiwane z dokładnymi dodatnimi wartościami position
. Więcej informacji na ten temat znajdziesz w sekcji pozycjonowanie przerw na reklamy. Po wywołaniu reklamy w celu jej odtworzenia pakiet Web Receivedr SDK kontynuuje odtwarzanie strumienia w miarę umieszczania w niej segmentów reklam. Ten typ reklamy nie ma dodatkowego mechanizmu ładowania.
Odpowiednie metadane reklamy są wyświetlane użytkownikowi, gdy suwak odtwarzania mieści się w przedziale czasu przerwy. Te przerwy wymagają elementu embedded timeline
i należy je dodać statycznie (więcej informacji znajdziesz w sekcji dotyczącej wstawiania reklam). Przykład poniżej przedstawia podstawową implementację reklamy 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.
umieszczone rozwinięte
Umieszczona przerwa na reklamę to typ przerwy na reklamę, który jest połączony po stronie serwera ze strumieniem głównej treści. Czas trwania elementu Break
jest uwzględniany w czasie trwania treści głównej przy obliczaniu czasu odtwarzania treści.
BreakClip
musi zawierać duration
treści reklamy oraz title
.
Break
musi mieć wartość isEmbedded
ustawioną na true
oraz expanded
na true
. position
można ustawić jako przerwę na reklamę przed filmem lub w trakcie filmu. Przerwy na reklamę po filmie są obsługiwane z dodatnimi wartościami position
. Więcej informacji na ten temat znajdziesz w sekcji pozycjonowanie przerw na reklamy. Po wywołaniu reklamy w celu jej odtworzenia pakiet Web Receivedr SDK kontynuuje odtwarzanie strumienia w miarę umieszczania w niej segmentów reklam. Ten typ reklamy nie ma dodatkowego mechanizmu ładowania.
Odpowiednie metadane reklamy są wyświetlane użytkownikowi, gdy suwak odtwarzania mieści się w przedziale czasu przerwy. Przerwy te wymagają parametru embedded timeline
i można je dodawać statycznie lub dynamicznie (więcej informacji znajdziesz w sekcji dotyczącej wstawiania reklam). Poniższy przykład przedstawia podstawową implementację reklamy 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;
Typy osi czasu odtwarzacza
Podczas tworzenia instancji odtwarzacza pakiet Web pickupr SDK wybiera typ osi czasu, który umożliwia odtwarzanie reklam podczas odtwarzania treści. Każda oś czasu umożliwia dodanie określonych typów przerw na reklamę. Typ osi czasu zależy od typów reklam występujących w czasie wczytywania w MediaInformation
elementu LoadRequestData
.
Jeśli istnieją osadzone przerwy na reklamę, wybierana jest oś czasu embedded
. Jeśli istnieją przerwy na reklamę połączone z klientem, wybierana jest oś czasu stitched
.
Jeśli nie ma żadnych reklam, pakiet SDK domyślnie używa osi czasu embedded
. Po wybraniu osi czasu nie można jej zmienić dla bieżącego elementu multimedialnego. W tabeli poniżej znajdziesz szczegółowy opis każdego z harmonogramów.
Typ osi czasu | Opis |
---|---|
osadzona oś czasu | Reprezentacja czasu odtwarzania multimediów, która uwzględnia reklamy umieszczone w głównej treści (osadzone i osadzone przerwy na reklamę). Gdy występuje nierozszerzona przerwa na reklamę, jej czas trwania jest odejmowany od łącznego czasu trwania treści. Jeśli natomiast występuje rozwinięta przerwa reklamowa, jej czas jest traktowany jako część głównej treści. |
połączonej osi czasu | Reprezentacja czasu mediów, która obsługuje reklamy pochodzące z zewnętrznych plików multimedialnych (przerwy na reklamy połączone ręcznie, VAST i VMAP). Gdy to zrobisz, czas trwania przerwy na reklamę nie będzie stanowił części głównej treści. |
Na rysunkach 1–3 poniżej widać niektóre treści z różnymi typami reklam i odpowiednimi wartościami na osi czasu. Dla treści jest ustawiona przerwa przed filmem zawierająca 2 klipy przerwy oraz przerwy na reklamy w trakcie filmu i po filmie zawierające pojedynczy klip przerwy. Pod każdą z tych wartości wyrównany jest czas ścienny od rozpoczęcia odtwarzania treści, czas odtwarzania multimediów głównej treści oraz czas aktualnie odtwarzanego klipu przerwy na reklamę.
Pozycjonowanie przerwy
Pakiet Web pickupr SDK pozwala programistom określić, gdzie powinny zostać umieszczone przerwy na reklamę, ustawiając właściwość position
obiektu Break
. Ta wartość odpowiada czasowi odtwarzania multimediów w głównej treści i może służyć do tworzenia przerw na reklamę pre-roll
, mid-roll
oraz post-roll
.
Są one zdefiniowane w następujący sposób:
Pozycja przerwy | Opis |
---|---|
reklama przed filmem | Przerwa na reklamę, która jest odtwarzana przed główną treścią. Jest to wskazywane przez ustawienie w polu breakPosition wartości 0 |
reklama w trakcie filmu | Przerwa na reklamę w trakcie odtwarzania treści. Oznacza to, że czas rozpoczęcia przerwy breakPosition jest późniejszy niż początek głównej treści, a czas jej zakończenia jest krótszy niż czas zakończenia głównej treści. |
reklama po filmie | Przerwa na reklamę, która jest odtwarzana po głównej treści. Wskazuje to ustawienie breakPosition na -1 na połączonych osiach czasu. W przypadku osadzonych osi czasu wartość breakPosition powinna być ustawiona na czas trwania głównej treści odjęty przez czas trwania przerwy. Nieobsługiwane w przypadku treści na żywo. |
Macierz interoperacyjności
Dla ułatwienia w tabeli 1 znajdziesz omówienie typów reklam oraz ich zgodności z funkcjami związanymi z reklamami.
Obsługa funkcji | reklama połączona ręcznie przez klienta | VAST | VMAP | reklama umieszczona | umieszczona rozwinięta reklama |
---|---|---|---|---|---|
zgodny z | VAST | ręcznie połączone przez klienta | Nie dotyczy | umieszczone rozwinięte | umieszczony |
oś czasu | zszyte | zszyte | zszyte | umieszczony | umieszczony |
wstawianie reklam | statyczne | statyczne | statyczne | statyczne | statyczne, dynamiczne |
usunięcie reklam | |||||
reklama przed filmem | |||||
reklama w trakcie filmu | |||||
reklama po filmie | |||||
pominięcie reklamy | |||||
przechwytywanie przerw na przechwytywanie | |||||
przechwytujący ładowanie klipu |
Wydarzenia
Gdy wystąpią kluczowe zdarzenia przerwy, pakiet SDK przesyłania będzie wysyłać zdarzenia typu BreaksEvent
.
Aplikacja odbierająca może je subskrybować za pomocą interfejsu API PlayerManager
addEventListener
.
Zdarzenia te mogą służyć do statystyk i śledzenia odtwarzania reklam. Gdy używane są reklamy VMAP (lista reklam wideo z różnymi reklamami) i VAST (szablon wyświetlania reklamy wideo), wszystkie standardowe zdarzenia śledzenia udostępniane w odpowiedziach są automatycznie wysyłane przez pakiet SDK.
Typy zdarzeń są wymienione w tabeli 2 wraz ze szczegółowym opisem, kiedy są uruchamiane.
Zdarzenie przerwy | Opis |
---|---|
BREAK_STARTED |
Uruchamiane, gdy bieżący czas odtwarzania treści głównych jest równy position nieobejrzanej przerwy. |
BREAK_CLIP_LOADING |
Uruchamiane tylko wtedy, gdy rozpoczyna się wczytywanie połączonego klipu osi czasu. |
BREAK_CLIP_STARTED |
Uruchamiane, gdy rozpoczyna się odtwarzanie klipu przerwy. |
BREAK_CLIP_ENDED |
Uruchamiane po zakończeniu klipu przerwy. Pole
endedReason
zostanie wypełnione w tych sytuacjach:
|
BREAK_ENDED |
Uruchamiane, gdy kończy się ostatni klip przerwy w przerwie. |
Wstawianie reklam
Pakiet SDK do przesyłania umożliwia aplikacjom wstawianie i usuwanie reklam w różnych momentach sesji przesyłania. Są 2 rodzaje wstawiania reklam: statyczne i dynamiczne.
Statyczne wstawianie reklam wymaga określenia reklam w LoadRequestData
przed utworzeniem odtwarzacza. Dynamiczne wstawianie reklam korzysta z interfejsu BreakManager
addBreak
API do wstawiania przerw w już wczytywanych treściach. Każdy typ metody wstawiania jest zgodny z określonymi typami reklam. Omówienie zgodności znajdziesz w tabeli interoperacyjności.
Statyczne wstawianie reklam
Statyczne wstawianie reklam polega na dodaniu odpowiednich metadanych reklamy przed utworzeniem odtwarzacza. Te informacje znajdziesz w MediaInformation
dokumentu LoadRequestData
. Wartość tę można na przykład ustawić w pierwotnym żądaniu wczytania połączonego nadawcy lub wstawić ją przez aplikację Web Received, przechwytując żądanie LOAD
. Odtwarzacz zostanie utworzony po zwróceniu pakietu LoadRequestData
do pakietu SDK Web Readr do przetworzenia w celu przetworzenia. Dowiedz się więcej o ładowaniu multimediów. Przykład poniżej pokazuje reklamę ręcznie połączoną z klientem dodaną w przechwycie do przechwytywania żądania 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;
});
Dynamiczne wstawianie reklam
Dynamiczne wstawianie reklam polega na ustawieniu przerwy na reklamę podczas odtwarzania treści. W tym celu uzyskuje się instancję BreakManager
i wywołuje interfejs API addBreak
. Potrzebne są co najmniej 2 parametry: umieszczona rozwinięta
Break
i tablica BreakClip
.
Dołączona jest opcjonalna trzecia właściwość, która wymusza wysyłanie zmian do połączonych nadawców przez transmisję MediaStatus
, gdy jest ustawiona na true
. Przy dodawaniu przerw i klipów przerwania odpowiadające im identyfikatory nie mogą się powtarzać. Takie reklamy można dodawać dopiero po utworzeniu odtwarzacza. Pakiet Web pickupr SDK uruchamia zdarzenie PLAYER_LOADING
po utworzeniu odtwarzacza. Poniżej znajdziesz przykład użycia w module obsługi zdarzeń, który reaguje na zmiany w metadanych ID3 strumienia i tworzy obiekty Break
oraz BreakClip
, które wstawiają je na osi czasu.
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]);
});
Dynamiczne usuwanie reklam
Aby usunąć dynamiczne przerwy, w trakcie odtwarzania aplikacja powinna wywoływać metodę removeBreakById
. Funkcja pobiera z osi czasu identyfikator przerwy w postaci ciągu znaków. Podany breakId
musi wskazywać na osadzoną rozszerzoną przerwę na reklamę. Jeśli zostanie wykryty inny typ przerwy na reklamę, pozostanie ona na osi czasu. Zapoznaj się z poniższym przykładem, który usuwa przerwę.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.removeBreakById('break_midroll_embedded_expanded');
Sposób działania przerw
Pakiet SDK określa domyślne zachowanie, gdy odtwarzacz zaczyna i kończy przerwę, oraz umożliwia jego dalsze dostosowywanie za pomocą niektórych interfejsów API dostępnych w BreakManager
.
Domyślne zachowanie przerwy
Gdy właściwość Break
jest wprowadzana podczas zwykłego odtwarzania lub przez przewinięcie do elementu Break
, pakiet SDK oceni, czy użytkownik już go widział, sprawdzając właściwość isWatched
. Po utworzeniu przerwy domyślna wartość dla tej właściwości to false
. Jeśli właściwość ma wartość true
, przerwa nie zostanie odtworzona po wejściu, a główne treści będą nadal odtwarzane. Jeśli właściwość ma wartość false
, przerwa zostanie odtworzona po jej wpisaniu.
Podczas wyszukiwania wcześniejszych przerw domyślna implementacja otrzymuje wszystkie elementy Break
, których position
znajduje się między wartościami seekFrom
i seekTo
operacji wyszukiwania. Z tej listy przerw pakiet SDK odtworzy funkcję Break
, której wartość position
jest najbliższa wartości seekTo
, a jej właściwość isWatched
jest ustawiona na false
. Właściwość isWatched
tej przerwy zostanie ustawiona na true
, a odtwarzacz rozpocznie odtwarzanie jej klipów. Po obejrzeniu przerwy główne odtwarzanie zostanie wznowione od pozycji seekTo
. Jeśli przerwa nie występuje, żadna przerwa nie zostanie odtworzona, a główna treść zostanie wznowiona od pozycji seekTo
.
Podczas odtwarzania przerwy pakiet SDK przekaże wszelkie istotne aktualizacje do połączonych aplikacji nadawcy w MediaStatus
.
Te aplikacje będą korzystać z transmisji do aktualizowania interfejsu reklam przez odczytanie właściwości breakStatus
. Tę właściwość definiuje się tylko podczas odtwarzania przerwy.
Aplikacje odbierające mogą też bezpośrednio wysyłać zapytania o informacje odnoszące się do pozycji suwaka odtwarzania względem bieżącego czasu elementu BreakClip
wyświetlanego przez wywołanie PlayerManager
getBreakClipCurrentTimeSec
.
Podobnie aplikacje mogą wysyłać zapytania o czas trwania bieżącego obiektu BreakClip
, wywołując metodę getBreakClipDurationSec
.
Niestandardowe zachowanie przerwy
Domyślne zachowanie przerw i klipów przerwy na reklamę można modyfikować za pomocą metod setBreakClipLoadInterceptor
i setBreakSeekInterceptor
podanych w BreakManager
.
Przechwytywanie przerw na przechwytywanie
Element przechwytujący przerwy na reklamę umożliwia aplikacji kontrolowanie sposobu przewijania w przypadku przerw na reklamę. Funkcja jest wyzwalana po wysłaniu żądania operacji wyszukiwania, która przewija co najmniej jedną przerwę do przodu lub do tyłu. Po wywołaniu BreakSeekData
jest przekazywany jako parametr do funkcji wywołania zwrotnego. Obiekt BreakSeekData
zawiera tablicę obiektów Break
, których właściwość position
jest ustawiona na wartość między bieżącym czasem odtwarzania zdefiniowanym jako seekFrom
a czasem docelowym przewijania seekTo
.
Ten obiekt przechwytujący umożliwia modyfikowanie obiektów Break
w odpowiednich przerwach. Po zaimplementowaniu tego elementu przechwytujący wyszukiwanie przerwy na reklamę musi określać, które przerwy na reklamy mają zostać odtworzone, zwracając opcjonalnie zmodyfikowany obiekt BreakSeekData
. Odtwarzacz rozpocznie odtwarzanie wszystkich przerw podanych w zwracanej wartości. Jeśli parametr przechwytujący wyszukiwanie przerwy na żądanie nie zwróci wartości null
lub nic nie zwróci, przerwa zostanie pominięta.
W przykładzie poniżej znajdziesz prostą implementację modułu przechwytującego. Zastąpi ono domyślne zachowanie i wyświetla wszystkie przeszukane przerwy na reklamę z wyjątkiem tych, które zostały już obejrzane.
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;
});
Element przechwytujący wczytywanie klipu przerwania
Za pomocą modułu przechwytującego wczytywanie klipu przerwania można zmodyfikować obiekt BreakClip
przed rozpoczęciem odtwarzania.
Element przechwytujący wczytywanie klipu przerwania jest wywoływany tylko w przypadku połączonych przerw na osi czasu i można go ustawić za pomocą setBreakClipLoadInterceptor
.
Przed wejściem Break
punkt przechwytujący jest wywoływany raz dla każdej osoby BreakClip
zdefiniowanej w tej przerwie. SDK przekazuje pierwotny obiekt BreakClip
jako parametr funkcji wywołania zwrotnego. Aplikacja może następnie zmodyfikować plik BreakClip
i zwrócić go, aby pakiet SDK mógł pobrać i wyświetlić klip przerwy ze zaktualizowaną konfiguracją. Jeśli zostanie zwrócona wartość null
lub nie zostanie zwrócona żadna wartość, klip przerywany jest pomijany.
Poniżej znajdziesz przykład, który zmienia contentUrl
klipów przerwania za pomocą wywołania funkcji getUrlFromClipId
, gdzie id
elementu BreakClip
jest mapowany na adres 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;
});
Pomijanie reklam
Pakiet Web pickupr SDK udostępnia interfejsy API umożliwiające pomijanie przerw na reklamy i poszczególnych klipów przerw na reklamy w ramach danej przerwy. Pakiet SDK umożliwia też użytkownikom opcjonalnie pomijanie klipów przerwania przez interakcję z aplikacjami nadawcy lub inteligentnymi ekranami.
Klipy przerwy na reklamę możliwe do pominięcia przez użytkownika
Gdy ustawisz klipy przerwy jako możliwe do pominięcia, użytkownicy będą mogli wchodzić w interakcje z powiązanymi aplikacjami nadawcy i inteligentnymi ekranami, aby opcjonalnie pominąć pozostałą część aktualnie odtwarzanego klipu. Ustawienie dla właściwości whenSkippable
nieujemnej liczby sekund spowoduje włączenie tej funkcji w obiekcie BreakClip
. Gdy klip przerwy będzie odtwarzany przez określoną liczbę sekund, odtwarzacz uzna, że klip przerwy można pominąć. Ustawienie tej wartości na 0
umożliwia użytkownikom natychmiastowe pominięcie klipu z przerwą.
// 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.
Te informacje można ustawić w pierwotnym żądaniu wczytania nadawcy lub w aplikacji odbierającej. Po pominięciu klip przerwy na reklamę na połączonej osi czasu przerwy na reklamę spowoduje zatrzymanie odtwarzania bieżącego klipu. Odtwarzacz wczyta następny klip przerwy (jeśli jest dostępny) lub główna treść. Pominięcie klipu przerwy na reklamę na osadzonej osi czasu powoduje przewinięcie do jego końca i kontynuowanie odtwarzania strumienia.
Automatyczne pomijanie reklam
Reklamy mogą być też pomijane automatycznie bez udziału użytkownika.
Aby pominąć całą przerwę od odtwarzania, aplikacja powinna ustawić właściwość isWatched
właściwości Break
na true
. Możesz to zrobić w dowolnym momencie podczas sekwencji wczytywania lub odtwarzania treści. Odtwarzacz ocenia właściwość isWatched
, gdy czas przerwy w treści (position
) zostanie osiągnięty w czasie trwania głównej treści. Wtedy odtwarzacz decyduje, czy należy wstawić przerwę.
Zobacz poniższy przykład, który odtwarza wszystkie przerwy i zmienia wartość podczas wczytywania odtwarzacza.
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;
});
});
Aby automatycznie pomijać określony klip przerwy, należy użyć przechwytującego ładowanie klipu przerwania. Zwrócenie wartości null
lub niezwrócenie wartości w funkcji wywołania zwrotnego powoduje pominięcie klipu w tej przerwie.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakClipLoadInterceptor(
(breakClip, breakClipLoadInterceptorContext) => {
return null;
});