como mesclar dois vídeos em um com o lado a lado quando eles têm resolução diferente?

0

Eu tenho dois vídeos

  1. deskshare.webm 1280x720 sem áudio
  2. webcams.webm 640x480 com áudio

Os comandos descritos abaixo funcionam conforme necessário

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

Existe alguma sintaxe que me permita livrar-me da resolução de entrada manual do segundo vídeo (no meu caso é 640 px)?

É possível usar algo como [1: v] width para obter esse valor automaticamente?

No meu caso também funciona bem isso

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

mas isso só funcionará se a largura do primeiro vídeo tiver o dobro da largura do segundo vídeo.

    
por Виктор Яковенко 22.07.2018 / 11:10

1 resposta

0

Isso pode ser feito de maneira indireta.

Use

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

O scale2ref redimensiona uma cópia do vídeo secundário para a altura do vídeo principal, mantendo a largura original. Depois é preenchido com preto e empilhado à direita do vídeo principal.

Uma segunda cópia do vídeo secundário é então sobreposta na tela expandida.

Você precisará do ffmpeg 4.0 ou mais recente.

    
por 22.07.2018 / 14:09

Tags