Передача данных о состоянии видео
Чтобы поиск по видео работал лучше и показывал более подходящие видеоролики, необходимо передавать информацию о событиях, которые помогают отслеживать состояние видеоролика (например, время начала, остановки, перемотки видео и т. д.) и о возможных ошибках.
События, которые сообщают о состоянии видео
Для передачи данных о состоянии видео применяйте механизм postMessage. Когда в плеере происходит событие (например, начинается воспроизведение видео), в JavaScript-коде вызовите функцию window.parent.postMessage
. В качестве аргументов функции передайте название события и его параметры (например, позицию прогресс-бара).
Пример использования функции
window.parent.postMessage({
event: <Название события>,
// дополнительные параметры события
}, '*');
Примечание
Функция postMessage
вызывается для родительского объекта window.parent
, поскольку видео размещается не на основной странице результатов поиска Яндекса, а в отдельном фрейме (в элементе iframe
).
Для отображения плеера в приложении поиска по видео для TV и в браузере необходимо передавать обязательные события и их параметры.
Передача дополнительных событий улучшит взаимодействие с плеером, а сигналы помогут эффективнее ранжировать видео.
Событие |
Описание |
Параметры события |
|
Инициализация плеера. |
— |
|
Остановка воспроизведения. |
|
|
Просмотр ролика завершен (достигнут конец ролика). |
|
|
Начало воспроизведения или продолжение воспроизведения после паузы. |
|
|
Воспроизведение ролика (событие повторяется многократно). |
|
|
Ошибка воспроизведения, факт недоступности видео. |
|
|
Начало показа рекламы. |
Примеры данных для события adShownПример 1Если рекламный блок начинает воспроизведение на тридцатой секунде видео и включает в себя два объявления, из которых первое имеет длительность 15 секунд и возможность пропуска, а второе длится 25 секунд и не может быть пропущено, то в событии
Пример 2Если имеется блок с единственным рекламным объявлением, который воспроизводится в самом начале видео (
Примечание Допустимо отправлять информацию с параметрами рекламы отдельным событием |
|
Конец показа рекламы. |
|
|
Показ первого кадра видео. Примечание Если перед началом видео воспроизводится реклама, отправляйте событие, когда после ее окончания появится первый кадр видео. |
|
Событие |
Описание |
Параметры события |
|
Перемотка видео. |
|
|
Возобновление воспроизведения. |
Примечание Событие |
|
Включение, выключение звука или изменение громкости. |
Аналогично нативному событию volumechange у элемента |
|
Начало процесса буфферизации видео/части видео. |
|
|
Конец загрузки части видео. |
|
|
Пропуск рекламы, не заменяет |
— |
|
Событие, которое свидетельствует о том, что рекламу можно пропустить методом |
|
|
Список доступных значений качества. |
|
|
Смена качества видео. |
|
|
Смена скорости воспроизведения. |
|
|
Переход плеера в полноэкранный режим или выход из полноэкранного режима. |
|
|
Плеер загрузился и готов к интерактивности (загружены данные, апи плеера). |
— |
|
Смена скорости воспроизведения видео. |
|
|
Признак программного скрытия элементов управления плеером (через метод |
|
|
Признак показа элементов управления плеером плеера (в ответ на вызов метода |
|
|
Факт внешнего перехода из плеера в рекламу, на сервис. |
|
|
Это событие должно отправляться при любой замене ролика внутри фрейма (элемента |
|
|
Произошла ошибка при попытке выйти или войти в полноэкранный режим. |
|
|
Список доступных значений качества. |
|
Пример передачи данных о видео в момент его запуска
Когда пользователь нажимает на плеере кнопку Play, вызывается функция window.parent.postMessage
с нужными параметрами.
// Отправка сообщения при старте проигрывания видео
window.parent.postMessage({
event: 'started',
duration: 30,
time: 5 // Если проигрывание возобновляется с 5 секунды
}, '*');
Сведения об ошибках
Чтобы получать сведения об ошибках при работе с видео, плеер должен передавать функции window.parent.postMessage
следующие коды ошибок:
Код ошибки |
Описание |
Недоступное видео |
|
101 |
Видео удалено. |
102 |
Видеоролик или учетная запись заблокирована. |
103 |
Видеоролик не существует либо URL не поддерживается. |
100 |
Прочие случаи недоступного видео. |
Ограничение доступа к видеоролику |
|
151 |
Недостаточно прав для просмотра видео. |
152 |
Видео запрещено к проигрыванию на других сайтах. |
153 |
Видео запрещено к проигрыванию в данном регионе. |
154 |
Ограничение доступа, которое требует подтверждения от пользователя (например, ограничения по возрасту, авторизация). |
155 |
Ролик недоступен, потому что сервис посчитал запрос роботным. |
156 |
Ролик доступен только по подписке. |
150 |
Прочие ограничения просмотра видео. |
Прочее |
|
5 |
Сбой работы плеера (ошибки воспроизведения HTML-проигрывателя и др.). |
0 |
Прочие ошибки. |
Пример отправки сообщения об ошибке
Если видео, которое открывается в плеере, было удалено, сообщение об ошибке может быть отправлено следующим образом:
// Отправка сообщения об ошибке
window.parent.postMessage({
event: 'error',
time: 0,
code: '101'
}, '*');
Поддержка параметров в URL плеера
Чтобы воспроизведение видео на Smart TV и в браузере было удобнее для пользователей, добавьте поддержку следующих параметров в URL плеера:
Параметр |
Описание |
Возможные значения |
|
Автозапуск воспроизведения. |
Пример
|
|
Управление отображением интерактивных элементов плеера на устройствах со Smart TV. |
Пример
Параметр управляет отображением всех элементов, нажимать на которые можно только указателем мыши. К ним относятся:
На телевизорах удобнее смотреть видео, если эти элементы скрыты автоматически. |
|
Загружать видео с выключенным звуком. |
|
|
Нужно ли отображать в плеере элементы управления (прогресс-бар, смена качества и пр.). |
|
|
Временная метка, с которой надо начать воспроизведение видео. |
ПримерВ примере видео начнет воспроизведение с 10:00 (600 c = 10 мин).
|
Управление плеером
Команды управления плеером передаются в iframe
из внешнего окна с использованием механизма postMessage. Чтобы принимать сообщения внутри iframe
, подпишитесь на событие message
. Команды представляют собой JSON-объект с обязательным полем method
.
Команда |
Описание |
|
Начало или продолжение воспроизведения. Пример
|
|
Пауза. Пример
|
|
Перемотка на абсолютное значение времени. Пример
|
|
Установка громкости. Пример
|
|
Принудительный показ элементов управления плеером. Пример
|
|
Метод для пропуска рекламы. Пример
|
|
Установка скорости воспроизведения видео. Пример
|
|
Выключение звука. Пример
|
|
Включение звука. Пример
|
|
Установка качества воспроизведения. Пример
Параметр |
|
Метод для смены видео внутри плеера без перерисовки всего
Пример
|
|
Метод для вызова начала буфферизации видео до его воспроизведения. Пример
|
|
Метод для открытия полноэкранного режима. Пример
|
|
Метод для выхода из полноэкранного режима. Пример
|
|
Скрытие элементов управления плеером. Пример
|
Пример запуска видео по команде
window.addEventListener('message', function (event) {
if (event.data.method === 'play') {
document.getElementById('video').play();
}
});
Формат ответа
Для обратной связи о выполнении команд используйте события, которые сообщают о состоянии видео.
Например:
-
При вызове метода
skipAd
, в случае успешного пропуска рекламы генерируется событиеadSkip
, если же возникла проблема — событие не отправляется. -
При использовании метода
setPlaybackRate
в ответ возникает событиеplaybackRateChanged
.
Для корректного отображения видео на Smart TV обязательно наличие ответного события для каждого метода.