Идея довольно простая — мы берём оригинальный видос, разрезаем его и заменяем фрагменты из него на пользовательские видео. Логика простая — считаем, сколько видео нам прислали и подменяем соответствующее количество фрагментов из оригинального видео. Например, всего в заставке 4 персонажа, пользователи прислали два видео. Подменяем их, и получаем результат, где два видео с пользователем, а два с оригинальными актёрами :)
Кстати, шутка была бы неплохой шуткой, но AWS Elemental MediaConvert действительно даёт возможность встроить любую непроматываемую рекламу! У них это идёт отдельной настройкой, и, в принципе, при желании, можно было бы поднять целую пиратскую CDN на их мощностях — техническая возможность есть.
Вот только AWS моментально заблокирует за такие фокусы :)
В итоге, видео длиной 44 секунды собирается примерно 40 секунд. Очевидно, нам не нужно каждый раз разрезать один и тот же видос, поэтому я нарезал фрагменты заранее и в первой лябмде просто собираю куски в нужном порядке. Если посмотреть трейс по X-Ray (тема для отдельной статьи), оказывается, большая часть времени уходит на то, чтобы отрисовать картинки с неймтегами и загрузить их в S3.
Разворачивал всё через CloudFormation, работает норм.
Паблик с3 тоже не понравился, но до клиента донесли. При необходимости можно через SignedUrl получить
Приложение не рассчитано на непрерывную работу и стандартное сравнение «Нам нужно держать 100 реквестов в секунду», где есть смысл в ЕС2. Здесь как раз предполагается Burst
Serverless-подход для быстрой разработки рабочего видео-сервиса