Сочетание зума с затуханиемffmpeg

Сочетание зума с затуханиемffmpeg

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

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

Буду признателен за любые подсказки, которые укажут мне правильное направление.

ffmpeg \ 
-loop 1 -t 5 -i input/slideshow/img0001.jpeg 
-loop 1 -t 5 -i input/slideshow/img0002.jpeg \
-loop 1 -t 5 -i input/slideshow/img0003.jpeg \
-loop 1 -t 5 -i input/slideshow/img0004.jpeg \
-filter_complex \
"[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1[v0]; \
 [1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 output/out_fade.mp4

решение1

Сочетание зума с затуханиемffmpeg

Приведенный вами пример ffmpegна самом деле работал с очень небольшими изменениями (сохранение -loopвызвало ошибку сегментации: " Error in 'ffmpeg': double free or corruption (!prev): 0x0000000008dffa00").

Итак, у нас есть:

ffmpeg \
-т 5 -и 1.jpg \
-т 5 -и 2.jpg \
-т 5 -и 3.jpg \
-т 5 -и 4.jpg \
-filter_complex \
"[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1[v0]; \
 [1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 ./out_fade.mp4

Пример вывода:

пример масштабирования, панорамирования и затухания

Качество картофеля - мне нужно лучше разобраться с gifоптимизацией! Артефакты и искажения являются результатом попытки получить размер файла < 2 МБ и отсутствуют в исходном видеовыходе - этого должно быть достаточно, чтобы дать вам представление о том, подходит ли это для вашего варианта использования. Изображения мои собственные.


(дополнительный)Использование разнообразных или произвольных переходов

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

Даже с этим минимальным примером, он filtergraphстановится довольно сложным довольно быстро, и утомительно что-то менять. Другая библиотека может подойти лучше.

МЛТ / РАСПЛАВ

Например,MELTдля MLT Frameworkможет сделать:

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

и часто предлагается.

MoviePy

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

Вас, вероятно, больше всего заинтересуют разделы, посвященныекомпозицияипереходы/эффекты


Я предлагаю два выше, основываясь на собственном опыте попыток вклиниться в переходы с помощью ffmpeg; это выполнимо и способно производить некоторые очень приличные эффекты, но боль того не стоит. Скрипт выше должен ответить на ваш вопрос о непрерывном увеличении с плавным увеличением/уменьшением.

Связанный контент