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

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

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

Примеры понаходил но они намного сложнее чем нужно. В даном случае все размеры отступы и прочее известны поскольку наложение будет выполнятся програмно и все что нужно можно вычислять и уже вставлять в комfнду ffmpeg
  • Вопрос задан
  • 843 просмотра
Решения вопроса 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 файлов более подробные инструкции.
Надеюсь это решение поможет вам
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы