@caballero
Программист

Как наложить видео на картинку с помощью ffmpeg?

Есть видео высотой 720 и разной но известной ширины.
надо наложить на картинку 1280 на 720 посередине.

Примеры понаходил но они намного сложнее чем нужно. В даном случае все размеры отступы и прочее известны поскольку наложение будет выполнятся програмно и все что нужно можно вычислять и уже вставлять в комfнду ffmpeg
  • Вопрос задан
  • 732 просмотра
Решения вопроса 1
ae_ph
@ae_ph
I'm a owl )
Я подумал, что это не плохая идея и написал bat файл.

: - Двоеточие используется для разделения значений.
; - График фильтров состоит из последовательности цепочек фильтров. Последовательность цепочек фильтров представлена ​​списком описаний цепочек фильтров, разделенных «;».
, - Цепочка фильтров состоит из последовательности связанных фильтров, каждый из которых связан с предыдущим в последовательности.
Цепочка фильтров представлена ​​списком описаний фильтров, разделенных символами ",".
scale2ref – Масштабируйте (изменяйте размер) входного видео на основе эталонного видео (изображения в нашем случае).
filter_complex – Объединяет фильтры в один.
overlay – Наложить одно видео поверх другого видео или изображения.
У него два входа и один выход. Первый вход - это «основное» видео, на которое накладывается второй вход.

1.1 – Значение масштабирования изображения.
Значение 1 приведёт к масштабированию изображения 1 к 1 с видео.
Значение 2 приведёт к масштабированию изображения в 2 раза.

Размер изображения не имеет значения. Изображение масштабируется относительно размера видео.
Видео остаётся статичным и его размеры не изменяются.

Структура папок для этого bat файла.
Your folder
|
| ffmpeg.exe
| JPG + MP4 = Watermark.bat
|
+---Result
|
|
\---Your_files
your_image.jpg
your_video.mp4

@echo off
setlocal EnableDelayedExpansion
color a
set a=Your_files\*.mp4
set aa=Your_files\*.jpg
set b="Result\temp1.mp4"
set c=ffmpeg
set f=-filter_complex "[1][0] scale2ref=w=oh*mdar:h=ih*1.1 [foto][video];[foto][video] overlay=(main_w-w)/2:(main_h-h)/2 " -preset ultrafast
for %%s in (%aa%) do !set aud="%%s"!
for %%a in (%a%) do (%c% -y -i "%%a" -i %aud% %f% %b%)
exit


У меня есть проект посвящённый FFMPEG
В этом репозитории есть много готовых решений.
Так-же вы сможете найти внутри .bat файлов более подробные инструкции.
Надеюсь это решение поможет вам
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы