ffmpeg: создаём fade-through (с переходом затемнения) видео из 3-х рисунков

Итак, у нас имеются 3 рисунка (изображения/фотографии и т.п.).

Мы хотим создать видео с переходами типа fade-in fade-out (затеменения) между ними.

Для удобства приведём риснуки к одному размеру, преобразуем их все в jpg (можно использовать и PNG формат, если хочется), и назовём их img0.jpg, img1.jpg, img2.jpg.

Вот как они могут выглядеть к примеру:

img0.jpg

img0.jpg

img1.jpg

img1.jpg

img2.jpg

img2.jpg

Рисунки в видео? Но зачем???

Теперь мы создадим 2-х минутный видео ролик из 1-ых двух риснуков (img0.jpg и img1.jpg)
с переходом затемнения,
причём в этом случае наш img0.jpg исчезнет быстрее.

Вот команда для ffmpeg (всё в одной строке, я разбил на несколько строк для удобства чтения):

ffmpeg -loop 1 -i img0.jpg -loop 1 -i img1.jpg 
-filter_complex 
"[1:v][0:v]blend=all_expr='A*(if(gte(T,1),1,T/1))+B*(1-(if(gte(T,1),1,T/1)))'" 
-y -c:v libx264 -t 2 fade1.mp4

Затем создаём подобный ролик для второго и третьего рисунков, причём теперь второй рисунок больше держится, чем третий.

ffmpeg -loop 1 -i img1.jpg -loop 1 -i img2.jpg
-filter_complex
"[1:v][0:v]blend=all_expr='A*(if(gte(T,2),1,T/2))+B*(1-(if(gte(T,2),1,T/2)))'" 
-y -c:v libx264 -t 2 fade2.mp4

Параметры:
-loop в обоих случаях говорит, что для одного вывода надо использовать оба файла
-i img[0|1|2].jpg – задание имён входных рисунков.
-filter_complex – вызов сложного фильтра, который собственно и создаёт эффект затемнения и перехода одного рисунка в другой. Лучше не спрашивайте как он работает, обратите внимание на числа после T, я их подобрал экспериментально для 2-х секундного ролика
-y – перезаписывать выходной файл без вопрсов, если он есть, не обязательный параметр
-c:v libx264 – кодек для видео MP4
-t 2 – длительность видео 2 секунды, для меня достаточно, можно естественно увеилчивать этот парметр, и соотв. менять значения чисел после T в фильтре перехода (-filter_complex)
fade[1|2].mp4 – название выходного файла

Примечание: если ffmpeg выдаёт какую-то тупую ошибку при выполнении этих команд, удостоверьтесь, что все ваши рисунки имеют одинаковое разрешение – не размер, а именно разрешение для печати, измеряется в точках на дюйм обычно (например, открыть рисунки в IrfanView, нажать кнопку i и проверить пункт Resolution, его при желании можно тут же изменять).

Итак, в итоге у нас появятся такие вкусняшки:

Кодируем для DVD

Переделать видео для формата pal-DVD 16:9

ffmpeg -y -i fade1.mp4 -target pal-dvd -aspect 16:9 fade1.mpeg 
ffmpeg -y -i fade2.mp4 -target pal-dvd -aspect 16:9 fade2.mpeg 

Создать картинки из видео в папке 1: Частота кадров 25 в секунду (-r 25) (зачем?)

ffmpeg -i fade1.mpeg -r 25 1/vid%03d.png