как объединить два видео в одно и расположить их бок о бок, если у них разное разрешение?

как объединить два видео в одно и расположить их бок о бок, если у них разное разрешение?

У меня есть два видео

  1. deskshare.webm 1280x720 без звука
  2. webcams.webm 640x480 со звуком

Описанные ниже команды работают по мере необходимости.

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=w+640" out.mp4

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4

Есть ли какой-либо синтаксис, который позволит мне избавиться от ручного ввода разрешения второго видео (в моем случае это 640 пикселей)?

Можно ли использовать что-то вроде [1:v]width, чтобы получить это значение автоматически?

В моем случае это тоже отлично работает

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex "[0:v]pad=(iw+iw/2):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4

но это сработает только в том случае, если ширина первого видео в два раза больше ширины второго видео.

решение1

Это можно сделать окольным путем.

Использовать

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
   "[1:v][0:v]scale2ref=main_w:ih[sec][pri];
   [sec]setsar=1,drawbox=c=black:t=fill[sec];[pri][sec]hstack[canvas];
   [canvas][1:v]overlay=main_w-overlay_w" out.mp4

Scale2ref изменяет размер одной копии вторичного видео до высоты основного видео, сохраняя при этом его исходную ширину. Затем он заполняется черным и складывается справа от основного видео.

Затем на развернутый холст накладывается вторая копия вторичного видео.

Вам понадобится ffmpeg 4.0 или новее.

Связанный контент