Ten przewodnik pokazuje, jak odtworzyć strumień DAI za pomocą pakietu IMA CAF DAI SDK. Jeśli chcesz zobaczyć lub prześledzić gotową przykładową integrację, pobierz przykład.
Zanim skorzystasz z tego przewodnika, zapoznaj się z protokołem odbiornika internetowego Chromecast Application Framework. W tym przewodniku zakładamy, że znasz podstawowe pojęcia związane z odbiornikiem CAF, takie jak przechwytywacze wiadomości i obiekty mediaInformation, a także że potrafisz używać narzędzia Cast Command and Control do emulowania nadawcy CAF.
Aby korzystać z IMA DAI, musisz mieć konto Ad Managera 360. Jeśli masz konto Ad Managera, skontaktuj się z menedżerem konta, aby uzyskać więcej informacji. Informacje o rejestracji w usłudze Ad Manager znajdziesz w Centrum pomocy Ad Managera.
Informacje o integracji z innymi platformami lub o korzystaniu z pakietów SDK IMA po stronie klienta znajdziesz w artykule Pakiety SDK Interactive Media Ads.
Omówienie dynamicznego wstawiania reklam w CAF
Implementacja DAI za pomocą pakietu IMA CAF DAI SDK obejmuje 2 główne komponenty, które opisujemy w tym przewodniku:
StreamRequest: obiekt, który definiuje żądanie strumienia do serwerów reklamowych Google. Żądania strumienia występują w 2 głównych odmianach:LiveStreamRequest: określa klucz zasobu oraz inne opcjonalne parametry.VODStreamRequest: określa identyfikator źródła treści, identyfikator filmu oraz inne opcjonalne parametry.- Oba typy żądań mogą opcjonalnie zawierać klucz interfejsu API potrzebny do uzyskania dostępu do określonych strumieni oraz kod sieci Google Ad Managera, który umożliwia pakietowi IMA SDK obsługę identyfikatorów reklam zgodnie z ustawieniami Google Ad Managera.
StreamManager: obiekt, który obsługuje komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. uruchamia pingi śledzące i przekazuje zdarzenia strumienia do wydawcy.
Wymagania wstępne
- Konto w Konsoli programisty Cast z zarejestrowanym urządzeniem testowym.
- Hostowana aplikacja odbiornika internetowego zarejestrowana w Konsoli programisty Cast, którą można zmodyfikować, aby hostowała kod podany w tym przewodniku.
- Aplikacja wysyłająca, która jest skonfigurowana do korzystania z aplikacji odbiornika internetowego. W tym przykładzie jako nadawca używane jest narzędzie Cast Command and Control.
Konfigurowanie obiektów MediaInfo nadawcy
Najpierw skonfiguruj obiekt MediaInfo aplikacji nadawcy, aby zawierał te pola:
contentId
|
Unikalny identyfikator tego elementu multimedialnego. | |
contentUrl
|
Adres URL strumienia zastępczego, który ma zostać wczytany, jeśli żądanie DAI StreamRequest nie powiedzie się z jakiegokolwiek powodu. | |
streamType
|
W przypadku transmisji na żywo ta wartość powinna być ustawiona na `LIVE`. W przypadku transmisji VOD ta wartość powinna być ustawiona na `BUFFERED`. | |
customData
|
assetKey
|
Tylko transmisje na żywo. Identyfikuje transmisję na żywo, która ma zostać wczytana. |
contentSourceId
|
Tylko strumienie VOD. Identyfikuje kanał multimedialny zawierający żądany strumień. | |
videoId
|
Tylko strumienie VOD. Identyfikuje żądany strumień w określonym pliku danych multimedialnych. | |
networkCode
|
(Opcjonalnie) Kod sieci Google Ad Managera. | |
ApiKey
|
Opcjonalny klucz interfejsu API, który może być wymagany do pobrania adresu URL strumienia z pakietu IMA DAI SDK. | |
senderCanSkip
|
Wartość logiczna, która informuje odbiorcę, czy urządzenie wysyłające może wyświetlać przycisk pominięcia, co umożliwia obsługę reklam możliwych do pominięcia. | |
Aby skonfigurować te wartości w narzędziu do dowodzenia i kontroli przesyłania, kliknij kartę Load Media (Wczytaj multimedia) i ustaw niestandardowy typ żądania wczytania na LOAD. Następnie zastąp dane JSON w obszarze tekstowym jednym z tych obiektów JSON:
NA ŻYWO
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "c-rArva4ShKVIAkNfy6HUQ",
"networkCode": "21775744923",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
VOD
{
"media": {
"contentId": "tos",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
"streamType": "BUFFERED",
"customData": {
"contentSourceId": "2548831",
"videoId": "tears-of-steel",
"networkCode": "21775744923",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
Ten niestandardowy obiekt żądania wczytania można wysłać do odbiornika, aby przetestować kolejne kroki.
Tworzenie podstawowego odbiornika CAF
Postępując zgodnie z przewodnikiem po podstawowym odbiorniku CAF SDK, utwórz podstawowy odbiornik internetowy.
Kod odbiornika powinien wyglądać tak:
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
</script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
cast.framework.CastReceiverContext.getInstance().start();
</script>
</body>
</html>
Importowanie pakietu IMA DAI SDK i pobieranie menedżera odtwarzacza
Dodaj tag skryptu, aby zaimportować pakiet IMA DAI SDK dla CAF do odbiornika internetowego, zaraz po skrypcie wczytującym CAF. Pakiet CAF DAI SDK jest zawsze aktualny, więc nie trzeba ustawiać konkretnej wersji. Następnie w tagu skryptu, który następuje po nim, zapisz kontekst odbiornika i menedżera odtwarzacza jako stałe przed uruchomieniem odbiornika.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
castContext.start();
</script>
</body>
</html>
Inicjowanie menedżera strumieni IMA
Zainicjuj menedżera strumieni w pakiecie SDK CAF DAI.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
Tworzenie przechwytywacza wiadomości o wczytywaniu
Pakiet CAF DAI SDK używa przechwytywacza wiadomości wczytywania CAF do wysyłania żądań strumienia i zastępowania adresu URL treści ostatecznym strumieniem DAI.
Przechwytywacz wiadomości wywołuje funkcję streamManager.requestStream(), która obsługuje ustawianie przerw na reklamę, wysyłanie żądania strumienia i zastępowanie istniejącego elementu contentURL.
Może być tylko jeden obiekt przechwytujący komunikaty o wczytywaniu, więc jeśli Twoja aplikacja wymaga użycia takiego obiektu, musisz uwzględnić wszystkie funkcje niestandardowe w tym samym wywołaniu zwrotnym.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => null;
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
this.broadcast('Stream request successful.');
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Tworzenie żądania strumienia
Aby dokończyć integrację DAI z CAF, musisz utworzyć żądanie strumienia, korzystając z danych zawartych w obiekcie mediaInfo od nadawcy.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => {
const imaRequestData = request.media.customData;
let streamRequest = null;
if (imaRequestData.assetKey) {
// Live stream
streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
streamRequest.assetKey = imaRequestData.assetKey;
} else if (imaRequestData.contentSourceId) {
// VOD stream
streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
streamRequest.contentSourceId = imaRequestData.contentSourceId;
streamRequest.videoId = imaRequestData.videoId;
}
if (streamRequest && imaRequestData.networkCode) {
streamRequest.networkCode = imaRequestData.networkCode;
}
if (streamRequest && imaRequestData.ApiKey) {
streamRequest.ApiKey = imaRequestData.ApiKey;
}
if (streamRequest && imaRequestData.senderCanSkip) {
streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
}
return streamRequest;
};
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Możesz teraz wysyłać żądania strumieni DAI i odtwarzać je za pomocą pakietu SDK CAF DAI od Google. Aby dowiedzieć się więcej o zaawansowanych funkcjach pakietu SDK, zapoznaj się z innymi przewodnikami lub pobierz przykładowe aplikacje odbiornika.