2

Я пробовал 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 ответ1

8

Сочетание зума с затуханием с помощью ffmpeg

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

Итак, мы имеем:

ffmpeg \
-t 5 -i 1.jpg \
-t 5 -i 2.jpg \
-t 5 -i 3.jpg \
-t 5 -i 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 довольно быстро становится довольно сложным, и менять вещи утомительно. Другая библиотека может быть лучше.

MLT / MELT

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

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

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

MoviePy

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

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .