Как добавить паузу к прокрутке изображения поверх видео с помощью FFMPEG?

Вопрос или проблема

У меня есть команда для прокрутки изображения поверх видео с помощью 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

Подробное объяснение команды:

  1. -y: Перезаписывать выходной файл без предупреждений.

  2. -i input.mp4: Входной файл, с которым мы работаем.

  3. -loop 1 -t 10 -i "image.png": Указывает, что изображение будет зациклено и длиться 10 секунд. Это позволяет изображению продолжать отображаться в течение всего времени.

  4. -filter_complex: Используется для обработки видео с применением сложных фильтров.

  5. overlay: Команда, отвечающая за наложение одного видео потока на другой.

  6. *`y=’if(gte(t,3), (t-3)250, 0)’`**: Это выражение определяет вертикальную позицию изображения:

    • gte(t,3): Проверяет, больше ли текущее время t 3 секунды.
    • *`(t-3)250`**: Если условие выполняется, начинает перемещать изображение вниз после 3 секунд. Умножение на 250 определяет скорость прокрутки.
    • 0: В случае, если текущее время меньше трех секунд, изображение остается неподвижным (высота на уровне 0).
  7. -qscale 1: Указывает качество выходного файла, где 1 соответствует наилучшему качеству.

Заключение

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

Если вы хотите дополнительно улучшить свои навыки работы с FFMPEG, рекомендуем изучить документацию и экспериментировать с другими фильтрами и эффектами, что поможет вам раскрыть весь потенциал этого мощного инструмента.

Оцените материал
Добавить комментарий

Капча загружается...