O ffmpeg pode fazer qualquer coisa: D
Assumindo que ambos os vídeos são da mesma resolução (o input1.mp4 terminará no lado esquerdo, o input2.mp4 no lado direito, o áudio do input1.mp4):
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw*2:ih:0:0[left];[left][1:v]overlay=W/2:0[out]' \
-map [out] -map 0:a -c:a copy \
-c:v libx264 -crf 23 -preset veryfast output.mp4
Primeiro, o filtro bloco recolhe o vídeo de input1.mp4, [0:v]
e dobra sua largura (adicionando uma carga extra de preto à direita), criando uma saída chamada [left]
. Então, o filtro overlay coloca o vídeo de input2.mp4, [1:v]
sobre a área preta no à direita de [left]
, criando uma saída chamada [out]
. -map [out] -map 0:a
diz ao ffmpeg para usar [out] e o áudio de input1.mp4 na codificação final. Todo o resto é uma opção padrão de codificação.
Para obter um efeito semelhante ao do vídeo vinculado à pergunta (portanto, um vídeo menor à esquerda no canto superior, um vídeo maior à direita), você precisa conhecer a resolução do vídeo menor. Digamos que tenha uma largura de 320:
ffmpeg -i input-large.mp4 -i input-small.mp4 -filter_complex \
'[0:v]pad=iw+320:ih:320:0[right];[right][1:v]overlay=0:0[out]' \
-map [out] -map 0:a -c:a copy \
-c:v libx264 -crf 23 -preset veryfast output.mp4