FFmpeg ч. 5 Делаем видео из картинок, текста и музыки

Осенью я сделал несколько клипов посвященных использованию ffmpeg для создания видеороликов из статичного контента — картинок и текста. Идея в создании программного комплекса способного генерить видеролики из карточек товара в автоматическом режиме.

Мне показалось что тема не очень зашла, да и как то навалилось работы, поэтому продолжение забросил. Однако, периодически, ко мне прорывается фидбек из разряда когда будет дальше. Поэтому будущее наступило и сегодня покажу как можно используя ffmpeg собрать готовый ролик из статики. Чтобы с анимацией. И музычки накинем.

В предыдущих роликах я обходился командной строкой Windows и батниками, но для решения сегодняшней задачи это слишком многословно и не универсально. Поэтому я использовал ещё и Python на минималках.

Сам по себе выходной ролик в творческом плане ))) абсолютно убог, но задача показать как все то, что было в моих роликах раньше, собрать в единое целое. Код без защиты от дурака и вредоноса, в продакшен такое нельзя !

Думаю с вступлением достаточно. Поехали.

Входные данные

У меня есть папка data, где лежат несколько картинок с расширением jpg и текстовый файл с несколькими строками текста. Я использую все картинки, сколько бы их не было в папке. Я показываю все строки текста в файле.

Анимации изображений с помощью ffmpeg

Каждая картинка показывается с тремя анимациями одинаковой продолжительности.

  1. Картинка плавно въезжает в высоту экрана из большего размера
  2. Картинка показывается вписанной в экран
  3. Картинка увеличивается из вписанной, после чего заменяется новой картинкой.

Длина ролика разная. Зависит от количества картинок.

Анимация текста с помощью ffmpeg

Текст выкатывается справа налево, каждая строка текста из текстового файла размещается в видео под предыдущей строкой текста. Скорость выкатывания строк зависит от длины текста, количества строк текста и совокупной длины ролика (которая зависит от количества картинок в папке).

Музыка

Музыку взял из фотонотеки YouTube и наложил на готовый ролик. Она должна обрезаться под длину ролика.

В итоге получилось вот такое видео.

Код скрипта на Python

Python 3.8. Библиотека только одна os, чисто для работы с входными файлами.


Повторюсь, код грязный !!! Его нельзя в лоб использовать в живом проекте на автомате. Например он проверяет файлы картинок по расширению и берет только jpg. Это не безопасно, да и картинки могут быть не только jpg ))). А длинные текстовые строки просто не будут помещаться в ширину видео. Одним словом дорабатывать его ещё и дорабатывать.

Однако что-то подобное у меня успешно работает несколько месяцев на полном автомате, заливая короткие ролики-презентации по api в социалки.

На выходе для данных из трех картинок и текстового файла с 4 строками текста получается вот такая сборка для ffmpeg:


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

30 марта 2021

Рубрики

Ваш комментарий может быть первым!

Есть что сказать по теме статьи? Пожалуйста - пишите!