Выберите интересующее вас решение DAI
Полный комплекс услуг DAI
В этом руководстве показано, как воспроизвести поток DAI с помощью IMA CAF DAI SDK. Если вы хотите просмотреть или использовать готовый пример интеграции, скачайте его .
Перед использованием этого руководства обязательно ознакомьтесь с протоколом веб-приёмника Chromecast Application Framework . Данное руководство предполагает базовый уровень знаний о приёмниках CAF, таких как перехватчики сообщений и объекты mediaInformation
, а также умение использовать инструмент Cast Command and Control для эмуляции отправителя CAF.
Для использования IMA DAI вам потребуется аккаунт Менеджера рекламы 360. Если у вас есть аккаунт Менеджера рекламы, обратитесь к своему менеджеру для получения дополнительной информации. Информацию о регистрации в Менеджере рекламы можно найти в Справочном центре Менеджера рекламы .
Информацию об интеграции с другими платформами или об использовании клиентских 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
. Затем замените 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
Добавьте тег script для импорта IMA DAI SDK для CAF в веб-приёмник сразу после скрипта, загружающего CAF. CAF DAI SDK постоянно обновляется, поэтому нет необходимости указывать конкретную версию. Затем в следующем теге script сохраните контекст приёмника и менеджер проигрывателей как константы перед запуском приёмника.
<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 с помощью CAF DAI SDK от Google. Чтобы узнать о более расширенных функциях SDK, ознакомьтесь с другими руководствами или загрузите наши примеры приложений-приёмников .