Skip to content

Instantly share code, notes, and snippets.

@kolyadin
Last active June 14, 2018 18:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kolyadin/b2427be579af335f8064d84afdfd6ad1 to your computer and use it in GitHub Desktop.
Save kolyadin/b2427be579af335f8064d84afdfd6ad1 to your computer and use it in GitHub Desktop.

DynamicMedia - платформа для создания персонализированного видео

Платформа DynamicMedia позволяет создавать динамические (персонализированные) видеоролики на основании предоставляемых данных, таких как текст, изображения и т.п. Доступ к использованию платформы предоставляется по модели SaaS (программное обеспечение как услуга) и не требует от клиента какой-либо установки или поддержки ПО на своих мощностях.

Персонализация

Персонализация видео - это программирование специального видео-шаблона (мастер-шаблон), используя внешние данные получаемые от пользователя, CRM, соц сети и т.п.

Программирование шаблона ничем не ограничено, но наиболее частые типы персонализации, это:

  1. Текст, надписи, числа;
  2. Изображения;
  3. "Видео в видео";
  4. Анимация;
  5. Озвучивание;
  6. Вариативность сцен;

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

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

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

Технология и внутренние процессы работы

Платформа представляет собой распределенную масштабируемую систему, которая состоит из следующих ключевых элементов:

  1. Командный сервер. Предоставляет приватное и публичное RESTful API для взаимодействия с платформой, а также панель администрирования. Отвечает за целостность хранимых задач на рендеринг и отправку уведомлений.
  2. Брокер очередей задач. Используется для построения кластерной архитектуры платформы.
  3. Рендер ячейка (render node). Представляет из себя специально подготовленный образ виртуальной машины, который может быть запущен в параллели с аналогичиными образами (горизонтальное масштабирование). Отвечает за рендеринг и постобработку.

Брокер очередей равномерно распределяет поступающие задачи на рендеринг из публичного API командного сервера на рендер ячейки. При необходимости, брокер очередей может прекратить равномерное распределение задач и, например, отправлять все задачи какого-либо проекта эксклюзивно на определенную группу рендер ячеек.

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

Если какой-либо рендер ячейке по любым причинам не удается успешно завершить задачу, эта задача возвращается обратно в брокер очередей для повторных попыток.

Технические особенности видеороликов

Видеоролик может представлять из себя классические видео, стереоскопическое видео (просмотр в 3D очках) или 360/VR видео. Итоговый видеоролик представляет собой кодированный в H.264/AAC контейнер .mp4, что гарантирует нативное воспроизведение на максимально возможном количестве пользовательских устройств. Также можно использовать любые другие кодеки и контейнеры. Битрейт подбирается индивидуально для каждого проекта, в среднем это ~3000kbps для 720p (HD) и ~5000kbps для 1080p (Full HD)

Создание проекта и его технические ограничения

Мастер-шаблон (далее шаблон) - это проект Adobe After Effects, со всем необходимым footage и другими файлами, которые используются в проекте. При разработке шаблона следует направить все силы на максимально быстрый рендеринг итоговой композиции.

Основные факторы, влияющие на итоговое время рендеринга: хронометраж, сложность композиций, fps, разрешение.

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

Также есть общий список рекомендаций для ускорения рендеринга:

  • Удалять неиспользуемые pre comps и footage;
  • Уменьшить количество используемых эффектов или вообще отказаться от них;
  • Уменьшить количество pre comps;
  • Уменьшить количество выражений (скриптов);

В настройках шаблона необходимо выставить Project Settings -> Time Display Style -> Frames. Файл шаблона Adobe After Effects следует назвать master-template.aep

Файл шаблона вместе со всеми файлами проекта следует сжать в .zip архив и предоставить техническим специалистам DynamicMedia для проверки, корректировки и дальнейшей загрузке в платформу.

Режимы создания видео

Существует два режима создания видеороликов: стандартный и быстрый.

Стандартный режим позволяет создавать большое количество видеороликов в заранее оговоренные сроки производства. Этот режим хорошо подходит для объемных задач, вроде почтовых рассылок или рассылок в мессенджерах, когда речь идет о создании десятков тысяч персонализированных видеосообщений.

Быстрый режим позволяет создавать видеоролики в максимально быстрые сроки (20-60 секунд), но ограничен количеством одновременных задач на создание. Режим позволяет предоставлять интерактивные функциональности, где конечный пользователь может непосредственно влиять на создание видеоролика.

Рендеринг видео - очень ресурсоемкий процесс. Для задач, которые не могут ждать даже одну минуту на создание готового видео, в платформе реализован "быстрый" режим работы. Особенность этого режима заключается в том, что для рендеринга одного видеоролика используется одновременно несколько рендер ячеек. В тоже время "стандартный" режим гарантирует, что на создание одного видеоролика будет зайдействована только одна рендер ячейка.

Интеграция с платформой

API Reference

Хранение и доставка видеороликов (CDN)

Видеоролик или видеофайл является тяжелым видом контента, он может занимать десятки мегабайт дискового пространства.

По умолчанию, платформа DynamicMedia использует облачное хранилище OVH Для кастомных интеграций есть поддержка протоколов: FTP, SFTP, WebDAV, OpenStack Swift API. Также поддерживаются хранилища популярных сервисов: Microsoft Azure, Amazon Web Services (AWS) S3, Google Cloud Storage, Dropbox.

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

Необходимость в использовании CDN сильно зависит от конкретного проекта, поэтому, по умолчанию, платформа DynamicMedia не использует какое-либо CDN решение.

Для территории РФ рекомендуется использовать: Selectel CDN, Ngenix CDN Для остального мира рекомендуется использовать: Amazon Cloudfront, Google Cloud CDN, Microsoft Azure CDN

Просмотр видеоролика

В результате использования платформы создается видеоролик(и) (как правило, это стандартный видеофайл-контейнер .mp4, кодированный в H.264/AAC). Платформа может отдавать готовый видеофайл путем предоставления публичной HTTP(S) ссылки. Такой способ хорошо подходит, когда непосредственным воспроизведением для пользователя занимается третья сторона. Например сторонний подрядчик, который интегрирует API платформы и хочет заниматься постобработкой видео. Либо система управления интернет-рекламы с собственными html5 проигрывателем (adriver.ru, adfox.ru).

В тоже время платформа DynamicMedia предоставляет собственный html5 проигрыватель, вот его возможности:

  • Desktop/Mobile friendly;
  • Интерактивность - наложение html элементов поверх видео с привязкой к конкретному времени;
  • Интеграция с Google Analytics, отправляется базовая статистика просмотров;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment