5

Я знаю, как сделать 5-секундный эффект "увеличения" видео с 1-м изображением, используя масштабирование.

ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='min(zoom+0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" zoomin.mp4

Как мне сделать видео "уменьшение"?

попробовал ниже но ни один из них не работает:

ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='min(zoom-0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" zoomout.mp4

ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='max(1.5,zoom-0.0015)':d=125" -c:v libx264 -t 5 -s "800x450" zoomout.mp4

ffmpeg -loop 1 -i image_1.jpg -vf "zoompan=z='max(zoom-0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" zoomin.mp4

2 ответа2

10

Сначала необходимо установить коэффициент масштабирования, так как по умолчанию он равен 1,0. Я смог сделать это так:

ffmpeg -loop 1 -i image_1.jpg -vf "zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125" -c:v libx264 -t 5 -s "800x450" zoomout.mp4

Который начнет увеличиваться в 1,5 и уменьшать 0,0015 каждую итерацию. Обратите внимание, что было использовано значение 1.001 (любое значение больше 1.0), чтобы гарантировать, что оно не уменьшит масштаб за 1.0 и не сбросится до 1.5.

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

1

Рассчитайте z из индекса кадра (вкл) и продолжительности.

on/duration даст вам процент от 0-1, который увеличивается с каждым кадром.

1.5-on/duration*0.5 Дает вам номер от 1,5-1.

Все вместе:

ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='1.5-on/duration*0.5':d=125" -c:v libx264 -t 5 -s "800x450" zoomin.mp4

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