У меня два видео

  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 ответ1

0

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

использование

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 или новее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .