Выберите решение DAI, которое вас интересует
Полный сервис DAI
В этом руководстве показано, как воспроизводить поток DAI с помощью IMA CAF DAI SDK. Если вы хотите просмотреть или проследить за завершенным примером интеграции, загрузите его .
Прежде чем использовать это руководство, обязательно ознакомьтесь с протоколом веб-приемника Chromecast Application Framework . В этом руководстве предполагается базовый уровень знакомства с концепциями приемников CAF, такими как перехватчики сообщений и объекты mediaInformation
, а также знакомство с использованием инструмента Cast Command and Control для эмуляции отправителя CAF.
Чтобы использовать IMA DAI, у вас должен быть аккаунт Менеджера рекламы 360 . Если у вас есть учетная запись Менеджера рекламы, обратитесь к менеджеру своего аккаунта за более подробной информацией. Информацию о регистрации в Менеджере рекламы можно найти в Справочном центре Менеджера рекламы .
Информацию об интеграции с другими платформами или использовании клиентских SDK IMA см. в разделе SDK Interactive Media Ads .
Обзор CAF DAI
Реализация DAI с помощью IMA CAF DAI SDK включает в себя два основных компонента, как показано в этом руководстве:
StreamRequest
: объект, определяющий запрос потока к рекламным серверам Google. Потоковые запросы бывают двух основных разновидностей:-
LiveStreamRequest
: указывает ключ актива и необязательный ключ API , а также другие необязательные параметры. -
VODStreamRequest
: указывает идентификатор источника контента , идентификатор видео и необязательный ключ API , а также другие необязательные параметры.
-
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-трансляции. Идентифицирует запрошенный поток в указанном медиаканале. | |
ApiKey | Дополнительный ключ API, который может потребоваться для получения URL-адреса потока из IMA DAI SDK. | |
senderCanSkip | Логическое значение, позволяющее получателю узнать, имеет ли отправляющее устройство возможность отображать кнопку пропуска, обеспечивая поддержку пропускаемой рекламы. |
Чтобы настроить эти значения в инструменте управления и управления приведением, перейдите на вкладку «Загрузить носитель» и установите тип пользовательского запроса загрузки на LOAD
. Затем замените данные JSON в текстовой области одним из следующих объектов JSON:
ЖИТЬ
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
"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",
"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>
Создайте перехватчик сообщения о загрузке
SDK CAF DAI использует перехватчик сообщений о загрузке 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.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, ознакомьтесь с другими руководствами или загрузите наши примеры приложений-приемников .