Выберите интересующее вас решение DAI
Полный комплекс услуг DAI
В этом руководстве показано, как воспроизвести поток DAI с помощью IMA CAF DAI SDK. Если вы хотите просмотреть или следовать завершенному примеру интеграции, загрузите пример .
Перед использованием этого руководства обязательно ознакомьтесь с протоколом Web Receiver платформы приложений Chromecast . Это руководство предполагает базовый уровень знакомства с концепциями приемника CAF, такими как перехватчики сообщений и объекты mediaInformation
, а также знакомство с использованием инструмента Cast Command and Control для эмуляции отправителя CAF.
Для использования IMA DAI у вас должна быть учетная запись Ad Manager 360. Если у вас есть учетная запись Ad Manager, свяжитесь с вашим менеджером по работе с клиентами для получения более подробной информации. Информацию о регистрации в Ad Manager см. в Справочном центре Ad Manager .
Информацию об интеграции с другими платформами или об использовании клиентских SDK IMA см. в разделе Interactive Media Ads SDKs .
Обзор CAF DAI
Реализация DAI с использованием IMA CAF DAI SDK включает два основных компонента, как показано в этом руководстве:
StreamRequest
: Объект, который определяет запрос потока к рекламным серверам Google. Запросы потока бывают двух основных видов:-
LiveStreamRequest
: указывает ключ актива , а также другие необязательные параметры. -
VODStreamRequest
: указывает идентификатор источника контента , идентификатор видео , а также другие необязательные параметры. - Оба типа запросов могут дополнительно включать ключ API, необходимый для доступа к указанным потокам, и сетевой код Google Ad Manager для IMA SDK для обработки идентификаторов объявлений, указанных в настройках Google Ad Manager.
-
StreamManager
: объект, который управляет взаимодействием между видеопотоком и IMA DAI SDK, например, отправляет пинги отслеживания и пересылает события потока издателю.
Предпосылки
- Учетная запись Cast Developer Console с зарегистрированным тестовым устройством.
- Размещенное приложение веб-приемника , зарегистрированное в консоли разработчика Cast и которое можно изменить для размещения кода, предоставленного в этом руководстве.
- Отправляющее приложение, настроенное на использование вашего веб-приложения-приемника. В этом примере в качестве отправителя используется инструмент Cast Command and Control .
Настройте объекты MediaInfo отправителя
Сначала настройте объект MediaInfo вашего приложения-отправителя, включив в него следующие поля:
contentId | Уникальный идентификатор для этого медиа-элемента | |
contentUrl | Резервный URL-адрес потока для загрузки, если DAI StreamRequest по какой-либо причине не удается выполнить. | |
streamType | Для прямых трансляций это значение должно быть установлено на `LIVE`. Для потоков VOD это значение должно быть установлено на `BUFFERED` | |
customData | assetKey | Только прямые трансляции. Определяет прямую трансляцию для загрузки. |
contentSourceId | Только потоки VOD. Определяет медиапоток, содержащий запрошенный поток. | |
videoId | Только потоки VOD. Определяет запрошенный поток в указанном медиаканале. | |
networkCode | (Необязательно) Ваш сетевой код Google Ad Manager. | |
ApiKey | Необязательный ключ API, который может потребоваться для получения URL-адреса потока из IMA DAI SDK | |
senderCanSkip | Логическое значение, позволяющее получателю узнать, может ли отправляющее устройство отображать кнопку пропуска, что обеспечивает поддержку пропускаемой рекламы. |
Чтобы настроить эти значения в инструменте управления и контроля трансляции, щелкните вкладку Load Media и установите тип запроса на пользовательскую загрузку LOAD
. Затем замените данные JSON в текстовой области одним из следующих объектов JSON:
ЖИТЬ
{
"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"
}
ВИДЕО ПО ЗАПРОСУ
{
"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"
}
Этот пользовательский объект запроса на загрузку можно отправить получателю для проверки следующих шагов.
Создайте базовый приемник CAF
Следуя руководству по базовому приемнику CAF SDK, создайте базовый веб-приемник.
Код вашего приемника должен выглядеть так:
<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>
Импортируйте IMA DAI SDK и получите Player Manager
Добавьте тег скрипта для импорта IMA DAI SDK для CAF в ваш веб-приемник, сразу после загрузки CAF скриптом. CAF DAI SDK является вечнозеленым, поэтому нет необходимости устанавливать определенную версию. Затем в следующем теге скрипта сохраните контекст приемника и менеджер проигрывателя как константы перед запуском приемника.
<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>
Инициализируйте менеджер потоков IMA
Инициализируйте менеджер потоков CAF DAI SDK.
<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>
Создать перехватчик сообщений о загрузке
CAF DAI SDK использует перехватчик сообщений загрузки CAF для создания запросов потока и замены URL-адреса контента на конечный поток DAI. Перехватчик сообщений вызывает streamManager.requestStream() , который обрабатывает установку рекламных пауз, запрос потока и замену существующего contentURL
.
Перехватчик сообщений о загрузке может быть только один, поэтому, если вашему приложению требуется использование перехватчика, вам необходимо включить любые пользовательские функции в тот же обратный вызов.
<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>
Создайте запрос на поток
Чтобы завершить интеграцию CAF DAI, вам необходимо создать запрос потока, используя данные, которые были включены в объект mediaInfo
от отправителя.
<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>
Теперь вы можете запрашивать и воспроизводить потоки DAI с помощью Google CAF DAI SDK. Чтобы узнать о более продвинутых функциях SDK, см. другие руководства или загрузите наши примеры приложений-приемников .