Самый простой способ сделать это sh, это использовать Формат потока байтов WebM , который позволяет браузеру загружать видео порциями ( это называется кластерами WebM ). Когда браузер загружает один чанк, он отправляет токен обратно на сервер, запрашивая следующий чанк ( на основе меток времени в видеопотоке ). Затем сервер может принять решение прекратить отправку видеопотока основной функции и вместо этого отправить видеопоток для рекламы. Как правило, он обновляет браузер новыми токенами при каждом запросе, чтобы гарантировать, что токены не могут быть повторно использованы для получения новых фрагментов, без того, чтобы сервер сначала принял решение о том, следует ли показывать рекламу в середине потока или нет. Этот же механизм используется большинством сайтов потокового видео для контроля того, когда реклама может воспроизводиться во время видеопотока.
WebM - это формат файла цифрового мультимедийного контейнера, поддерживаемый open- исходный проект WebM. Он содержит подмножество формата мультимедийного контейнера Matroska.
Итак, чтобы рассмотреть практический пример этой техники, давайте предположим, что у нас есть видеофайл длиной 10 минут. Мы стремимся нарезать видео на более мелкие фрагменты (скажем, по 30 секунд каждый), но только логичным способом. Видеофайл физически не поврежден. Когда страница загружается в первый раз, сервер предоставит одноразовый токен (например, nonce ), который можно использовать для извлечения первого фрагмента видео ( первые 30 секунд ) , Таким образом, браузер сгенерирует запрос AJAX вместе с токеном, и сервер ответит 30-секундным фрагментом видео и обновленным токеном. Этот процесс будет повторяться снова и снова, пока мы не достигнем конца видео. Если в какой-то момент сервер решит, что нам нужно показать рекламу, то вместо отправки следующих 30 секунд видео мы отправляем вместо рекламы. Для конечного пользователя создается впечатление, что все видео и реклама воспроизводятся в одном и том же видео.
То, как сервер отслеживает, сколько видео было просмотрено пользователем, основано на токенах. пользователь отправляет обратно в следующем запросе. Вот как вы можете произвольно размещать рекламу в видео на основе длины видео.