---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.3
alternate:
  - https://yandex.com/dev/rtb/doc/ru/ssp/video-ads.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/rtb/doc/ru/llms.txt

# Видеореклама

Видеореклама строится на стандарте VAST [Video Ad Serving Template](https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf). Это XML-документ, который выступает «сценарием» для видеоплеера на стороне площадки — он сообщает плееру, откуда скачать сам видеофайл, какие пиксели вставить на 25%, 50% и 100% просмотра, и куда вести при клике.

### Объект `imp.video`

В запросе площадка SSP передает параметры видеоплеера, чтобы DSP прислала ролик, который этот плеер физически сможет проиграть.

#|
|| **Параметр** | **Описание**||
|| `mimes` | Поддерживаемые форматы. Как правило, `["video/mp4"]` для InApp и Web, и если плеер поддерживает интерактивные скрипты (старый VPAID), то application/javascript. ||
|| `minduration` | Минимальная длина ролика в секундах. Например, от 5 секунд. ||
|| `maxduration` | Максимальная длина ролика в секундах. Например, до 30 секунд. ||
|| `protocols` | Версии VAST — массив чисел, обозначающих, какие версии стандарта VAST понимает плеер. Например: 
- `2` = VAST 2.0
- `3` = VAST 3.0
- `7` = VAST 4.0
- `8` = VAST 4.0 Wrapper ||
|| `placement` | Тип размещения:
- In-Stream — ролик проигрывается внутри другого видеоконтента (Pre-roll, Mid-roll). Плеер со звуком, как на YouTube или в онлайн-кинотеатрах.
- Out-Stream — видеоплеер появляется там, где нет другого видео, например, раскрывается между абзацами текста в статье.
- Interstitial — полноэкранное видео, всплывающее между действиями. ||
|| `w` | Ширина окна плеера. ||
|| `h` | Высота окна плеера. ||
|| `linearity` | Возможные значения:
- `1` — Linear, видео перекрывает весь плеер, ставит основной контент на паузу.
- `2` — Non-Linear, видео накладывается поверх контента (как плашка внизу экрана). ||
|#

### Протокол VAST

Видеоплеер считывает XML и делает следующие действия:

1. `<Impression>` — как только видео начинает проигрываться, плеер использует эту ссылку, чтобы DSP засчитала показ.
2. `<MediaFiles>` — содержит ссылку на mp4-файл, который плеер скачивает и проигрывает.
3. `<TrackingEvents>` — трекинг досматриваемости (Quartiles). Плеер должен отправлять пинг на сервер DSP, когда пользователь посмотрел 25% (firstQuartile), 50% (midpoint), 75% и 100% (complete) ролика.
4. `<VideoClicks>` — если пользователь кликнет по плееру, будет перенаправлен на ссылку из `<ClickThrough>`, а по ссылке из `<ClickTracking>` будет отправлена статистика.

### Трекинг ошибок (Error Pixels)

В видеорекламе могут возникать ошибки, такие как файл не найден, формат не поддерживается плеером, таймаут Wrapper, поэтому в VAST предусмотрен тег `<Error>`. Если плеер не смог воспроизвести ролик, он использует эту ссылку, подставляя туда макрос ошибки (например, `[ERRORCODE]=400`), чтобы сообщить DSP, почему ее реклама не была показана.

Виды ошибок VAST с описанием можно найти в официальной документации [IAB VAST 3.0](https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf).

### Пример запроса

``` json
{
  "id": "req-video-999",
  "imp": [
    {
      "id": "imp-1",
      "bidfloor": 5.00,
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "minduration": 5,
        "maxduration": 15,
        "protocols": [ 2, 3, 5, 6 ], 
        "w": 1080,
        "h": 1920,
        "placement": 5, 
        "linearity": 1,
        "api": [ 7 ] 
      }
    }
  ],
  "app": {
    "bundle": "com.game.racer"
  }
}
``` 
### Пример ответа

В ответ DSP отправляет ставку, а в поле `adm` — передает VAST XML (сам код либо ссылку на него).

{% note alert %}

В реальном JSON-ответе XML-строка в `adm` идет с экранированными кавычками `(\")`.

{% endnote %}

``` json
{
  "id": "req-video-999",
  "seatbid": [
    {
      "seat": "dsp-video-1",
      "bid": [
        {
          "id": "bid-777",
          "impid": "imp-1",
          "price": 6.50,
          "nurl": "https://dsp.com/win?bid=777&price=${AUCTION_PRICE}",
          "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><VAST version=\"3.0\"><Ad id=\"12345\"><InLine><AdSystem>DSP_Name</AdSystem><AdTitle>Promo Video</AdTitle><Impression><![CDATA[https://dsp.com/track/impression?bid=777]]></Impression><Creatives><Creative><Linear><Duration>00:00:15</Duration><TrackingEvents><Tracking event=\"firstQuartile\"><![CDATA[https://dsp.com/track/q1]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://dsp.com/track/q2]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://dsp.com/track/q3]]></Tracking><Tracking event=\"complete\"><![CDATA[https://dsp.com/track/complete]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://landing.brand.com]]></ClickThrough><ClickTracking><![CDATA[https://dsp.com/track/click]]></ClickTracking></VideoClicks><MediaFiles><MediaFile delivery=\"progressive\" type=\"video/mp4\" width=\"1080\" height=\"1920\"><![CDATA[https://cdn.dsp.com/video/ad_1080x1920.mp4]]></MediaFile></MediaFiles></Linear></Creative></Creatives></InLine></Ad></VAST>"
        }
      ]
    }
  ]
}
```

{% note alert %}

Как правило видеофайлы весят около 3–15 МБ, и из-за долгой загрузки в мобильных играх InApp показывать видео сразу после победы в аукционе нельзя. Поэтому SDK сначала скачивает mp4-файл в фоновом режиме (кэширует на устройство), и только когда пользователь доходит до нужного момента в игре, мгновенно запускает ролик.

{% endnote %}