1 Обзор и Стратегия
Специфика CTV
Среды Connected TV значительно различаются тем, как они работают с медиа:
Android TV и tvOS используют нативный код (Java/Kotlin, Swift) и полноценные SDK.
Tizen и WebOS запускают HTML5/JS в браузерах с ограниченными ресурсами.
Универсальное решение: t=app
Рекомендовано для ВСЕХ CTV платформ
Для всех CTV платформ мы настоятельно рекомендуем использовать параметр
t=app.
Стандартный запрос
Возвращает сложный JS (VPAID), который часто вызывает сбои на TV.
Запрос с t=app
Возвращает чистый VAST/MP4. Обеспечивает плавное воспроизведение и 100% fill rate.
Параметры запроса
| Параметр | Пример | Описание |
|---|---|---|
plc |
tv_preroll_home |
Placement ID |
w |
1920 |
Ширина (1920 для HD) |
h |
1080 |
Высота (1080 для HD) |
t |
app |
Обязательно Форсирует VAST Wrapper (MP4) |
2 Samsung Tizen и LG WebOS
Используйте Video.js + Google IMA SDK. Эта связка де-факто является стандартом для web-based Smart TV.
Реализация (main.js)
var player = videojs('tv_player');
// 1. Создание URL (t=app КРИТИЧЕН!)
var adTagUrl = "https://omnibox.digital/ads/direct?plc=tizen_preroll&w=1920&h=1080&t=app&cb=" + Date.now();
// 2. Конфигурация IMA
player.ima({
id: 'tv_player',
adTagUrl: adTagUrl,
// Отключаем VPAID для стабильности на TV
vpaidMode: google.ima.ImaSdkSettings.VpaidMode.DISABLED,
showCountdown: true,
showControlsForAds: false
});
// 3. Запуск
player.on('ready', function() {
player.ima.initializeAdDisplayContainer();
player.ima.requestAds();
player.play();
});
3 Android TV
Используйте ExoPlayer + IMA Extension для нативной интеграции.
// t=app is REQUIRED for clean VAST
val adUrl = "https://omnibox.digital/ads/direct?plc=androidtv_preroll&w=1920&h=1080&t=app&cb=$cb"
val mediaItem = MediaItem.Builder()
.setUri(contentUri)
.setAdsConfiguration(
MediaItem.AdsConfiguration.Builder(Uri.parse(adUrl)).build()
)
.build()
4 Apple TV (tvOS)
Используйте AVPlayer + Google IMA SDK.
requestAds() {
// t=app is REQUIRED
let adTagUrl = "https://omnibox.digital/ads/direct?plc=appletv_preroll&w=1920&h=1080&t=app&cb=\(cb)"
let request = IMAAdsRequest(adTagUrl: adTagUrl,
adDisplayContainer: adDisplayContainer,
contentPlayhead: nil,
userContext: nil)
adsLoader.requestAds(with: request)
}
5 Кастомные плееры (C++ / Legacy)
Целевая аудитория
Samsung Orsay, Roku BrightScript, и старые STB с кастомными движками.
! Ручной Парсинг VAST
-
•
Запросите URL с
t=app. -
•
Если
<Wrapper>: извлекитеVASTAdTagURIи повторите запрос. Сохраните пиксели. -
•
Если
<InLine>: возьмитеMediaFile(video/mp4) и играйте. -
•
Файрите трекинг пиксели (impression, start, complete) вручную.