FFmpeg по-русски. zoom — динамическое увеличение, уменьшение изображения

FFmpeg примеры динамического увеличения, уменьшения изображения. Для видео ffmpeg -i -lavfi “format=yuv444p, zoompan=z=’if(gte(in,30),min(pzoom 1/500,5),1)’: x=’iw/2-(iw/zoom/2)’: y=’ih/2-(ih/zoom/2)’: d=1: s=1280x720: fps=30, format=yuv420p, setpts=PTS-STARTPTS“ video-zoom-slow-(v1).mp4 • gte(in,30) — задержка начала увеличения на 1 сек, т.е. начало после 30 кадра • min(pzoom 1/500,5),1) — изменение скорости и продолжительности увеличения NB! Необходимо указывать разрешение и частоту кадров исхдящего видео, например, s=3840x2160 и fps=30. По умолчанию используются s=1280x720 и fps=25. Входящее видео здесь сначала форматируется в yuv444p, потому что этот формат даёт наилучший результат плавности увеличения без подёргивания. После обработки фильтром zoompan, если требуется, можно переформатировать в yuv420p. ffmpeg -i -lavfi “format=yuv444p, zoompan=z=pzoom :x=’iw/2-iw/zoom/2’:y=’ih/2-ih/zoom/2’: d=1: s=1280x720: fps=30, format=yuv420p, setpts=PTS-STARTPTS“ video-zoom-slow-(v2).mp4 ffmpeg -i -filter_complex “format=pix_fmts=yuva444p, pad=w=1/0.1*iw:h=1/0.1*ih: color=white: x=(ow-iw/2): y=(oh-ih)/2, zoompan=z=pzoom : x=’iw/2-(iw/zoom/2)’: y=’ih/2-(ih/zoom/2)’: d=1:s=1280x720: fps=30, trim=duration=5, format=yuv420p, setpts=PTS-STARTPTS“ pzoom — значение параметра расчитано на увеличение изображения до исходного размера за 5 секунд. color=white — белый фон можно заменить на синий или зелёный для использования фильтра chromakey. Для фото ffmpeg -loop 1 -i -t 10 -filter_complex “format=yuv444p, zoompan=z=’if(gte(in,30),min(pzoom 1/500,5),1)’: x=’iw/2-(iw/zoom/2)’: y=’ih/2-(ih/zoom/2)’: d=1: s=720x720: fps=30, format=yuv420p, setpts=PTS-STARTPTS“ picture-zoom-in-(v1).mp4 ffmpeg -loop 1 -i -t 10 -c:v libx264 -vf “format=pix_fmts=yuva444p, zoompan=z=’min(max(zoom,pzoom) ,9.0)’: d=1: x=’iw/2-(iw/zoom/2)’: y=’ih/2-(ih/zoom/2)’: s=720x720:fps=30, format=pix_fmts=yuva420p, setpts=PTS-STARTPTS“ picture-zoom-in-(v2).mp4 Значения и 9.0 взаимозависимые. Повышая одно и понижая другое можно подобрать скорость и продолжительность увеличения изображения. ffmpeg -i -filter_complex “[0:v]format=pix_fmts=yuva444p, pad=w=1/0.1*iw:h=1/0.1*ih:x=(ow-iw/2):y=(oh-ih)/2, zoompan=z=’on*(1/0.1)/(30*10)’: d=(30*10): x=’iw/2-(iw/zoom/2)’: y=’ih/2-(ih/zoom/2)’: s=720x720: fps=30, format=pix_fmts=yuva420p, setpts=PTS-STARTPTS[vo]“ -map “[vo]“ picture-zoom-in-(v3).mp4 • on*(1/0.1) — скорость увеличения 10 пикселей каждый кадр • (30*10) — продолжительность увеличения 10 секунд при 30 кадрах в секунду ffmpeg -i -filter_complex “format=pix_fmts=yuva444p, pad=w=1/0.1*iw:h=1/0.1*ih: color=white: x=(ow-iw/2): y=(oh-ih)/2, zoompan=z=’(10*30-on)*(1/0.1)/(10*30)’: d=(10*30): x=’iw/2-(iw/zoom/2)’: y=’ih/2-(ih/zoom/2)’: s=720x720: fps=30, format=pix_fmts=yuva420p, setpts=PTS-STARTPTS“ picture-zoom-out-(v1).mp4 • (10*30-on)*(1/0.1) — продолжительность уменьшения 10 секунд при 30 кадрах в секунду • (10*30)’:d=(10*30) — скорость уменьшения 10 пикселей каждый кадр ffmpeg -i -filter_complex “format=pix_fmts=yuva444p, zoompan=z=’(10*30-on)*(1/0.1)/(10*30)’: d=(10*30): x=’iw/2.5-(iw/zoom/2.5)’: y=’ih/2.5-(ih/zoom/2.5)’: s=720x720: fps=30, format=pix_fmts=yuva420p, setpts=PTS-STARTPTS“ picture-zoom-out-(v2).mp4 ffmpeg -i -vf “format=yuv444p, zoompan=z=’if(lte(mod(on,42),10),zoom ,)’: x=’iw/2-(iw/zoom)/2’: y=’ih/2-(ih/zoom)/2’: d=300: s=720x720:fps=30, format=yuv420p, setpts=PTS-STARTPTS“ Продолжительность видео 10 секунд (300/30) ffmpeg -i -vf “format=yuv444p, zoompan=d=300: z=’if(gte(zoom,1.8) eq(ld(1),1)[id125886778|zoom,1],*st(1,1),zoom 0*st(1,0)): x=iw/2-(iw/zoom/2): y=ih/2-(ih/zoom/2)’: s=1280x720: fps=30,format=yuv420p, setpts=PTS-STARTPTS“ -t 10
Back to Top