Вопрос или проблема
У меня есть команда для прокрутки изображения поверх видео с помощью FFMPEG:
ffmpeg -y -i input.mp4 -loop 1 -t 10 -i "image.png" -filter_complex "[0][1]overlay=y='t*250'" -qscale 1 output.mp4
Что нужно добавить к этой команде, чтобы изображение прокручивалось не сразу, а через 3 секунды?
Мне нужно, чтобы изображение полностью закрывало видео в течение первых 3
секунд, а затем скользило вниз через 3
секунды. Разрешение видео и изображения одинаковое.
Просто используйте условие if
:
ffmpeg -y -i input.mp4 -loop 1 -t 10 -i image.png -filter_complex "[0][1]overlay=y='if(gte(t,3), (t-3)*250, 0)'" -qscale 1 output.mp4
где:
gte(t,3)
означает время больше или равно3
секундам(t-3)
корректирует движение на 3 секунды0
это ваша постоянная позиция изображения
Ответ или решение
Как добавить задержку к прокрутке изображения поверх видео с использованием FFMPEG
Введение
Визуализация контента в видео формируется не только за счет динамичности изображения, но и с помощью элементарных эффектов, таких как прокрутка. Одним из мощных инструментов для обработки видео является FFMPEG, который позволяет создавать различные эффекты, включая наложение изображений на видео. В настоящем руководстве мы рассмотрим, как добавить задержку к прокрутке изображения, чтобы оно сначала полностью закрывало видео, а затем плавно перемещалось вниз.
Проблема
Вы имеете начальную команду для прокрутки изображения (image.png
) по видео (input.mp4
):
ffmpeg -y -i input.mp4 -loop 1 -t 10 -i "image.png" -filter_complex "[0][1]overlay=y='t*250'" -qscale 1 output.mp4
Однако, по условиям задачи, требуется, чтобы изображение появлялось на экране и полностью перекрывало видео в течение первых трех секунд. После этого оно должно начать двигаться вниз.
Решение
Для достижения желаемого эффекта требуется внести небольшие изменения в команду FFMPEG. Мы будем использовать условный оператор if
, чтобы задать логику для перемещения изображения:
ffmpeg -y -i input.mp4 -loop 1 -t 10 -i "image.png" -filter_complex "[0][1]overlay=y='if(gte(t,3), (t-3)*250, 0)'" -qscale 1 output.mp4
Подробное объяснение команды:
-
-y
: Перезаписывать выходной файл без предупреждений. -
-i input.mp4
: Входной файл, с которым мы работаем. -
-loop 1 -t 10 -i "image.png"
: Указывает, что изображение будет зациклено и длиться 10 секунд. Это позволяет изображению продолжать отображаться в течение всего времени. -
-filter_complex
: Используется для обработки видео с применением сложных фильтров. -
overlay
: Команда, отвечающая за наложение одного видео потока на другой. -
*`y=’if(gte(t,3), (t-3)250, 0)’`**: Это выражение определяет вертикальную позицию изображения:
gte(t,3)
: Проверяет, больше ли текущее времяt
3 секунды.- *`(t-3)250`**: Если условие выполняется, начинает перемещать изображение вниз после 3 секунд. Умножение на 250 определяет скорость прокрутки.
0
: В случае, если текущее время меньше трех секунд, изображение остается неподвижным (высота на уровне 0).
-
-qscale 1
: Указывает качество выходного файла, где 1 соответствует наилучшему качеству.
Заключение
Используя предложенный подход с условным оператором, вы сможете добиться нужного эффекта плавного перемещения изображения, которое сначала полностью закрывает видео, а затем начинает прокручиваться вниз. Данный метод предоставляет гибкость и контроль над визуальными эффектами, что делает вашу видеопродукцию более профессиональной.
Если вы хотите дополнительно улучшить свои навыки работы с FFMPEG, рекомендуем изучить документацию и экспериментировать с другими фильтрами и эффектами, что поможет вам раскрыть весь потенциал этого мощного инструмента.