В этой статье я хочу рассказать о системе автоматизированного создания материалов для VOD (видео-по-запросу) для компании ЦТВ. Задача была поставлена достаточно амбициозная – в кратчайшие сроки и с минимальными затратами настроить комплекс, полностью подготавливающий видео материалы для нового проекта OTT VOD. Обычно мы занимаемся автоматизацией процессов планирования вещания, и наша область ответственности заканчивается на границе с системой автоматизации вещания – наш софт формирует расписание (плей-лист), полностью готовое к выводу в эфир. Однако, в отличие от эфирных каналов, для распространения видео-по-запросу на выходе нужно иметь не только расписание, но и перемонтированные и подготовленные видео файлы.

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

Самый простой и распространённый способ решения этой задачи – переложить эту работу на плечи операторов монтажных станций, однако для больших пакетов материалов (сотни и тысячи позиций) это становится экономически неоправданным. Система планирования выдаёт подробный монтажный скрипт с точностью до кадра, работа по такому монтажу рутинная, требовательна к уровню ошибок, а значит, это повод для автоматизации.

Врезка по ТЭО

Для того, чтобы выяснить экономическую оправданность внедрения можно сравнить стоимость обработки определённого объема видео материалов. Конкретные цифры в каждой компании будут немного отличаться, так как отличается размер заработной платы сотрудников монтажа, стоимость монтажных станций и серверов. Однако основной принцип остаётся неизменным: если работы выполняет сотрудник на окладе, то стоимость часа обработки видео включает в себя не только вычислительное время, но и оплату работы сотрудника. Внедрение проекта - однократная трата, закупка серверов - также. После внедрения конвейера по сути необходимо оплачивать только работу вычислительных серверов. А эти расходы гораздо меньше (на несколько порядков), чем фонд оплаты труда операторов монтажа. В нашем случае внедрение проекта оказывалось экономически оправданным уже при однократной обработке 150 часов видео. А так как нужно было обработать пакет из почти тысячи часов, то проект сэкономил существенную сумму.


Стоимость обработки часа видео

Средняя стоимость часа видео при ручной обработке была около 500-700 рублей, а конвейерной - около 10 рублей. Это цифры с учётом первоначальных затрат и амортизации оборудования. То есть, внедрение конвейерной обработки видео позволяет сократить стоимость однотипных работ по монтажу видео более чем в 50 раз. Причина простая: конвейер, в отличие от операторов монтажных станций, не требует повременной оплаты и работает 24 часа в сутки, семь дней в неделю, без выходных и праздников.


Производительность решения

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

Существующие аналоги.

На этапе выбора технологии мы провели обзор рынка, чтобы выяснить, какие существуют инструменты для автоматизированного видеомонтажа. И выяснилась парадоксальная ситуация - широко распространённые пакеты для видеомонтажа Adobe Premier Pro, Grass Valley Edius, Apple Final Cut Pro не имеют функций автоматизированного монтажа, то есть всегда нужен оператор, который создаст файл проекта и запустит его на просчёт. Есть сторонние плагины, которые позволяют использовать монтажную станцию в качестве фрейм-сервера, но у них тоже свои ограничения. И самое главное, монтажные программы не поддерживают конвейерную обработку - то есть в них нет модуля, который бы следил за появлением новых заданий и запускал их в обработку.

С другой стороны, мощные кодирующие комплексы типа Telestreams Episode and Vantage, ProMedia Carbon (Harmonics ProCoder), Digital Rapids Transcode Manager, Adobe Media Encoder, Dalet Amberfin iCR умеют следить за входящими заданиями и обрабатывать аудио и видео в многопоточном и многосерверном режиме, но при этом никаких сложных манипуляций с видео (подрезки, склейки, наложения логотипов и т.п.) эти программы не поддерживают. У них одна задача, которую они отлично решают - быстро перекодировать видео в нужный формат и битрейт.

Оказалось, что готового и широко распространенного решения просто не существует. Было принято решение собирать систему самостоятельно из нескольких частей.

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

Решение

В области видео обработки самые известные имена свободных программ - AviSynth и FFmpeg . Первая программа - это полноценный фрейм-сервер, который позволяет получать аудио и видео из различных источников, накладывать фильтры, изменять параметры аудио и видео потоков, работать с SMPTE данными и выводить результат в стандартном виде (несжатый видео поток нужного цветового формата). Вторая - универсальный видео кодировщик, который поддерживает практически все современные широко распространённые форматы сжатия видео и аудио.

Третий необходимый компонент – менее известная программа для автоматизированной подачи заданий на обработку FFASTrans , обладающая всеми необходимыми функциями для организации конвейерной обработки.

Итак, набор инструментов был определён, оставалось интегрировать его с нашим софтом для планирования и существующими у заказчика системами хранения и архивации видео (МАМ - Media Asset Management).

После нескольких итераций разработки мы пришли к следующей архитектуре:


Общая схема процесса

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

  • ID смонтированного материала,
  • названия исходных видео файлов в МАМ,
  • начальные и конечные тайм-коды каждого фрагмента,
  • типы фрагментов, возрастные ограничения, наличие плашки курения и т.п.
  • для целей отладки добавлены метаданные - название материала и его идентификатор в системе планирования.
  • FFASTrans следит за папками, куда выгружаются монтажные скрипты, и запускает их обработку.

    Первым этапом запускается интеграционный скрипт, который для каждого задания проверяет в МАМ наличие всех исходных видео файлов. Часто один и тот же материал необходимо вывести в несколько раз в различном виде, например, в SD и HD форматах, либо с разными вставками, поэтому для ускорения работы все видео файлы индексируются, а их индексы кэшируются. Таким образом сильно сокращается нагрузка на сетевое хранилище.

    Когда все видео файлы проверены и проиндексированы, для каждого монтажного скрипта создаётся AviSynth скрипт с соответствующими параметрами. Далее FFASTrans находит нужный AviSynth скрипт, воспринимает его как источник видео, применяет к нему фильтры, описанные в рабочем процессе и запускает FFMPEG для получения сжатого видео нужного формата и битрейта. Готовое видео сохраняется в целевую папку или загружается на удалённый FTP сервер.

    Склейка видео файлов, накладывание логотипов, приведение разнородных материалов к единому стандарту происходит непосредственно в момент кодирования видео. Когда FFMPEG запрашивает очередной видео кадр, AviSynth этот кадр формирует "на лету", применяя всю логику, описанную в соответствующем скрипте и передаёт FFMPEG результат своей работы - очередной видео кадр или аудио сэмпл.

    Новые возможности

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

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

    Внедрение конвейера позволило выводить не один вариант итогового материала, а несколько вариантов - как для различных целевых платформ распространения VOD, так и с различным вторичным содержимым. Стало возможно планировать изменение VOD ресурсов в каталоге на протяжении полного цикла жизни. Например, первые несколько дней фильм может содержать один набор кросс-промо, а при появлении в VOD каталоге связанного контента вместо них отображать анонс следующей серии.

    Рынок VOD OTT еще только развивается, и новые идеи по оформлению контента придумываются прямо на ходу. Поэтому и наш конвейер интенсивно дополняется новыми возможностями по запросам от «бизнеса». А открытость софта позволяет вносить все изменения практически мгновенно. Поэтому уже пару раз отправляли весь пакет контента на перемонтаж с учетом новых веяний (что заняло около недели работы фермы). Это было бы просто невозможно при сохранении ручной подготовки контента к публикации.

    Автор статьи: Александр Соркин