Поиск по сайту:

Как увеличивать и уменьшать масштаб видео с помощью FFmpeg

FFmpeg — мощный конвертер аудио и видео с открытым исходным кодом. Используя FFmpeg, мы можем кодировать, декодировать, перекодировать, мультиплексировать, демультиплексировать, записывать, изменять размер, транслировать, фильтровать и воспроизводить практически все типы медиафайлов. Мало того, мы также можем захватывать живой аудио/видеопоток. FFmpeg поставляется с множеством фильтров для выполнения различных задач. Один из менее известных, но полезных фильтров — zoompan. Используя фильтр масштабирования, мы можем легко увеличивать и уменьшать масштаб видео в Linux. Позвольте мне показать вам, как это сделать, на примере команды.

Убедитесь, что вы установили FFmpeg на свой компьютер с Linux. Мы задокументировали шаги по установке FFmpeg в популярных операционных системах Linux по следующей ссылке.

  • Как установить FFmpeg в Linux

После установки FFmpeg перейдите в папку, где вы сохранили видео, и выполните следующую команду, чтобы увеличивать и уменьшать его каждые X секунд:

ffmpeg -i input.mp4 -vf "zoompan=z='if(lte(mod(time,10),3),2,1)':d=1:x=iw/2-(iw/zoom/2):y=ih/2-(ih/zoom/2):fps=30" output.mp4

Приведенная выше команда увеличит масштаб видео к центру до 2-кратного масштаба в течение первых 3 секунд из каждых 10 секунд интервала времени. Замените input.mp4 именем своего файла. Также отрегулируйте значения в соответствии с вашими требованиями и установите FPS для фильтра, чтобы он соответствовал входным данным. Значение по умолчанию — 25.

Вы можете найти информацию о FPS среди других деталей данного видео, используя следующую команду:

ffmpeg -i input.mp4

Найдите значение FPS видео с помощью ffmpeg

Вот фактическое входное видео перед преобразованием:

Входное видео

А вот конвертированное (увеличенное) видео:

Вывод видео

Вы заметили разницу? Видео увеличивается в 2 раза в течение первых 3 секунд, а затем возвращается к нормальному состоянию (уменьшение). Ровно на 10-й секунде видео снова увеличивается на первые 3 секунды, и цикл продолжается до тех пор, пока видео не закончится.

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

Увеличьте масштаб до 1,5x и одновременно переместите его в какое-то место ближе к центру изображения:

zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360

Увеличение масштаба до 1,5x и панорамирование всегда по центру изображения:

zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'

То же, что и выше, но без паузы:

zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'

Увеличьте вдвое центр изображения только в течение первой секунды входного видео:

zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'

Дополнительные примеры команд FFmpeg см. в следующем руководстве:

  • 20+ команд FFmpeg для начинающих

Надеюсь это поможет.

Статьи по данной тематике