Как устроены онлайн-кинотеатры: техническая сторона - Моя ХАТА

Как устроены онлайн-кинотеатры: техническая сторона

Начинается всё с подписания лицензионного соглашения с правообладателем. Мы заполняем много технических опросников, нас досконально изучают: как и что мы делаем, наши процессы, насколько мы безопасны, защищены и так далее.

Как только мы прошли этот этап и договорились по деньгам, с нами связывается специальный отдел, который готовит контент к цифровому домашнему просмотру. Это не то же, что готовить к кинопоказу, там есть особенности в звуке и видео. Они с нами связываются, присылают нам некие сэмплы — обычно это десять минут. Мы на них смотрим и пробуем кодировать. Смотрим, получается у нас это или нет, есть ли у нас такая техническая возможность. 

После того как мы говорим, что все окей, мы устанавливаем безопасный транспорт — то есть систему передачи файлов от студии к нам на сервера. Таких систем может быть несколько.

? От редакции: под студией здесь понимается компания, которая занимается дистрибуцией фильмов, то есть их продажей кинотеатрам, во всевозможные видеопрокаты и на онлайн кинотеатре. В каталоге студии может быть несколько десятков, сотен, тысяч и десятков тысяч фильмов. 

Можно представить, что студия — это оптовик: у него есть много товара, который он отгружает конечным продавцам. Таких студий-оптовиков много, есть побольше и поменьше, есть чисто российские, есть представительства международных компаний. 

В каком формате передаются «сырые» фильмы

В межстудийном обмене обычно используется формат MXF. Видео может быть представлено совсем в сыром виде, например, передаётся каждый кадр. Это всё зажимается в код, который называется PEG 2000 — считается, что он без потерь. Там нет никакого потокового видеосжатия, просто лежит кадр за кадром. 

Такие файлы весят от 100 гигабайт до 1 терабайта. Мы видели файлы 1,5 ТБ — такое бывает.

Мы это к себе загружаем: у нас есть специальное хранилище, в котором лежат именно исходные варианты файлов. Мы их очень бережём, потому что сама доставка, операция трансфера тоже стоит денег — мы должны платить за все эти услуги. Сама услуга такого трансфера, если не считать платы за трафик, может стоить около 500 долларов. 

От редакции: что значит «потоковое сжатие»

Любое видео — это последовательность картинок с подложенной под неё аудиодорожкой. Но если просто передавать эти картинки, то видеофайлы будут огромными. Чтобы их уменьшить, используют различные алгоритмы сжатия.

Например, может быть такой алгоритм: 

  1. Если у нас видео со скоростью 25 кадров в секунду, мы назначаем опорным каждый 25-й кадр. Опорные кадры мы передаём полностью. 
  2. Все остальные неопорные кадры мы анализируем: что в следующем кадре изменилось относительно предыдущего. Если что-то изменилось, мы это кодируем и передаём. Если не изменилось, мы это не кодируем и не передаём. 
  3. Получается, что между опорными кадрами передаётся только то, что изменилось. Этих данных может быть много, а может быть и мало. 

Например, если в фильме долго показывают красивый пейзаж, то такая сцена будет весить мало, ведь в ней ничего особо не происходит. Значит, нужно кодировать не так много изменений и передавать не так много данных. Такая сцена будет весить почти в 25 раз меньше, чем она же без сжатия. 

А если в сцене много всего происходит, то нужно постоянно кодировать эти изменения и передавать зрителю. Специальный алгоритм определяет, какие изменения считать изменениями, а какие — нет.

Где хранятся файлы фильмов

У нас два дата-центра: в Питере и в Москве. Исходники мы не зеркалируем, в этом нет необходимости, мы их храним только в Питере. Мы размещаемся в центре обработки данных, там высокая степень надёжности (Tier3) и всё безопасно, туда проход сотрудникам по специальным пропускам. Всё секретно и секьюрно.

Как происходит кодирование? Что такое кодек? 

Дальше в дело вступает система управления контентом. Нужно завести запись в базе данных, что это такой-то фильм, его снял такой-то режиссёр, в нём играют такие-то актёры.

У нас есть специальная ферма для транскодирования файлов, туда заводится задача: вот исходные файлы, их нужно скодировать для таких-то выходных устройств. У фермы постоянно идёт какой-то поток, она постоянно всё кодирует — этот файл встаёт в очередь. Когда до него доходит дело, ферма забирает его к себе и там его транскодирует.

Что такое «транскодирует»? Исходный файл, который мы скачали у студии, ни один мобильный телефон, ни один телевизор никогда в жизни не проиграет — он слишком хорош для этих устройств. Для того чтобы это стало возможным, для того чтобы просто сам видеокодек сложился, контейнер был понятен, — для этого нужно преобразовать этот крутой файл в понятные для устройств видеофайлы. 

Кодек — это формат сжатия для видео. Это такая инструкция, что нужно делать со входящим потоком данных, чтобы его уменьшить. Но при этом когда декодирующее устройство его обратно развернёт, оно сможет вывести на экран картинку, и мы будем видеть как будто бы всё то же самое.