Junte-se a vídeos lado a lado

1

De que maneira posso juntar esses quatro vídeos lado a lado (com margem de 10 pixels entre o lado esquerdo e o lado direito? Sem margem entre o topo e o fundo)?

  • top_left.mp4

  • top_right.mp4

  • bottom_left.mp4

  • bottom_right.mp4

Kdenlive é tão buggy e me deixou louco. Qualquer método de linha de comando é bem-vindo.

    
por ar2015 19.03.2017 / 15:37

1 resposta

3

Apenas vídeo

Borda de 10px entre esquerda e amp; certo

Existem vários métodos para fazer isso, mas usando hstack , vstack e pad é provavelmente o mais fácil:

ffmpeg -i top_left.mp4 -i bottom_left.mp4 -i top_right.mp4 -i bottom_right.mp4 -filter_complex \
"[0:v][1:v]vstack,pad=iw+10:ih[l]; \
 [2:v][3:v]vstack[r]; \
 [l][r]hstack" \
output.mp4
  • As entradas devem ter a mesma largura, altura e "formato de pixel". Se eles não usarem a escala e / ou filtros para preparar os fluxos para os filtros * stack.

  • Use *stack=shortest=1 se quiser que a saída do filtro termine quando a entrada mais curta terminar.

Borda de 10px entre esquerda e amp; direita, borda 3px entre top e amp; fundo

ffmpeg -i top_left.mp4 -i bottom_left.mp4 -i top_right.mp4 -i bottom_right.mp4 -filter_complex \
"[0:v]pad=iw:ih+3[tl]; \
 [tl][1:v]vstack,pad=iw+10:ih[l]; \
 [2:v]pad=iw:ih+3[tr]; \
 [tr][3:v]vstack[r]; \
 [l][r]hstack" \
output.mp4

Com áudio combinado

O filtro amerge combinará todos os canais de entrada, então -ac 2 os converterá em estéreo:

ffmpeg -i top_left.mp4 -i bottom_left.mp4 -i top_right.mp4 -i bottom_right.mp4 -filter_complex \
"[0:v][1:v]vstack,pad=iw+10:ih[l]; \
 [2:v][3:v]vstack[r]; \
 [l][r]hstack[v]; \
 [0:a][1:a][2:a][3:a]amerge=inputs=4[a]"
-map "[v]" -map "[a]" -ac 2 output.mp4
  • Usando o amerge, o áudio combinado será apenas o menor tempo possível. Se isso for um problema, use amix .
por LordNeckbeard 19.03.2017 / 20:20