Mesclar dois clipes de vídeo em um, colocando-os próximos um ao outro

29

Eu tenho dois videoclipes. Ambos são 640x480 e duram 10 minutos. Um contém áudio de fundo, o outro é um ator de canto. Eu gostaria de criar um único vídeo de 10 minutos medindo 1280x480 (em outras palavras, eu quero colocar os vídeos próximos uns dos outros e tocá-los simultaneamente, misturando o áudio de ambos os clipes). Eu tentei tentar descobrir como fazer isso com ffmpeg / avidemux, mas até agora eu cheguei vazio. Todos eles se referem à concatenação quando eu procuro uma fusão.

Alguma recomendação?

    
por user 04.10.2015 / 13:58

3 respostas

32
ffmpeg \
  -i input1.mp4 \
  -i input2.mp4 \
  -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' \
  -map [vid] \
  -c:v libx264 \
  -crf 23 \
  -preset veryfast \
  output.mp4

Isso basicamente dobra o tamanho de input1.mp4 preenchendo o lado direito com preto do mesmo tamanho do vídeo original e, em seguida, coloca input2.mp4 sobre a parte superior da área preta com o filtro de sobreposição.

Fonte: link

    
por 04.10.2015 / 14:10
17

Isso pode ser feito com apenas dois filtros e o áudio de ambas as entradas também será incluído.

ffmpeg -i left.mp4 -i right.mp4 -filter_complex \
"[0:v][1:v]hstack=inputs=2[v]; \
 [0:a][1:a]amerge[a]" \
-map "[v]" -map "[a]" -ac 2 output.mp4
  • O hstack colocará cada vídeo lado a lado.
  • O amerge combinará o áudio de ambas as entradas em um único fluxo de áudio multicanal, e -ac 2 o tornará estéreo ; sem essa opção, o fluxo de áudio pode acabar como 4 canais se ambas as entradas forem estéreo.
por 07.10.2015 / 23:36
9

Para ser honesto, usar a resposta aceita resultou em muitos quadros perdidos para mim.

No entanto, o uso do hstack filter_complex produziu uma saída perfeitamente fluida:

ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4
    
por 11.04.2018 / 16:57