Ffmpeg умеет обрезать видео и накладывать одно на другое по заданным координатам.

И так имеем: три видео файла. Berlin.mp4, Korea_360.mp4, Traffic_360.mp4. Их заранее уровняли по всем свойствам: размер, частота кадров, длительность видео. Файл Berlin.mp4 будет основным фоном. На него наклеим 2 других видео. Только у одного файла есть звук. Он и пойдет в конечный файл.

Обрезаем кадр, с помощью команды crop. Сначала ей пишут размеры желаемого видео в пикселях, а потом координаты по оси x и по оси y, откуда начинать.

Выбираем отрезок видео. Ширина исходного файла 1920 пикселей. Высота 1080. Высота отрезка будет 360, ширина останется 1920.

Отсчет координат по оси x начинаем с нуля, по оси y выбираем 590.

Команда выглядит так:

ffmpeg.exe   -i Korea.mp4 -vf crop=1920:360:0:590 -b 4522k  Korea_360.mp4

Фильтр запускается –vf, так как действие происходит над потоком (потоками), которые не меняются на выходе.

В команде указан битрейт, во избежание потери качества.

Обрезаем подобным образом еще одно видео Traffic_360.mp4.

Затем приступаем к наложению.

ffmpeg.exe   -i Berlin.mp4 -i Korea_360.mp4 -i Traffic_360.mp4 -filter_complex «overlay=0:360,overlay=0:0» -b 4522k -map «1:a:0» combo.mp4

-i Berlin.mp4 -i Korea_360.mp4 -i Traffic_360.mp4 – три входных видео потока. Номера входов: Berlin.mp4 — 0, Korea_360.mp4 — 1, Traffic_360.mp4 — 2.

-filter_complex – запускаем фильтр. Так как у нас участвуют потоки с различных файлов ставим команду filter_complex.

«overlay=0:360,overlay=0:0» – overlay  действует так: нулевой вход для него всегда фон, а потом он накладывает видео по порядку, вход 1 наклеивает сверху, вход 2 и так далее. Номер входа не указывается. Наш пример словами будет звучать так: наложить на нулевой вход сначала поток видео из входа номер 1. Левый верхний угол наложить на координату 0:360. Затем наложить поток видео из входа номер 2. Координата верхнего левого угла 0:0.

-b 4522k – указан битрейт, во избежание потери качества.

-map «1:a:0» – взять аудио поток 0 из входа 1 (-i Korea_360.mp4).

combo.mp4 – конечному файлу присвоить имя combo.

Дополнение к фильтру crop.

Можно записывать команду с помощью именных данных:

in_w – ширина входного видео.
in_h — высота видео.
x — горизонтальная позиция.
y — вертикальная позиция.

Используются, когда вместо абсолютных цифр удобнее применять относительные. Например:

crop=2/3*in_w:2/3*in_h

Означает вырезать центральные две трети от ширины и высоты видео. (Если координаты угла, с которого начинается отсчет не указаны Ffmpeg вырежет кадр из центра.)