Como eu combino vídeos e incluo espaços em branco com o ffmpeg?

0

Suponha que eu tenha uma série de arquivos de vídeo para combinar com horários sem sobreposição:

  1. 1.mp4 [0: 00-0: 45]
  2. 2.mp4 [1: 00-2: 00]
  3. 3.mp4 [2: 10-3: 00]

Este exemplo tem três segmentos, mas, em geral, pode haver mais.

Supondo que esses sejam da mesma proporção, mas não necessariamente do mesmo tamanho, eu gostaria de usar um filtro complexo para combiná-los em um arquivo de vídeo de 3:00, com espaços em branco quando não houver vídeo. Eu realmente quero um resultado de filtro mais complexo com isso como uma parte, mas esta é a parte que eu não entendo como produzir.

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
[0:v] scale=640x480 [one];
[1:v] scale=640x480 [two];
[2:v] scale=640x480 [three];
???
[out]" -map '[out]' out.mp4

Eu estou procurando a (s) função (ões) do filtro para aplicar após dimensionar os fluxos de vídeo de entrada. Eu olhei para:

  1. concat - Isso não parece permitir o preenchimento de horário
  2. streamselect e sendcmd - Isso parece ficar terrivelmente complicado se houver muitos fluxos

Esta questão é semelhante a FFmpeg - Concenating arquivos de áudio com espaçamento , mas com vídeo em vez de áudio.

Estou apenas procurando ajuda com o vídeo; Eu já tenho o áudio funcionando do jeito que eu quero.

    
por mattm 11.04.2016 / 23:12

1 resposta

2

Você pode fazer isso usando o filtro de cores.

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
[0:v]scale=640x480[one];
color=black:s=640x480:d=15[b0];
[1:v]scale=640x480[two];
color=black:s=640x480:d=10[b1];
[2:v]scale=640x480[three];
[0:v][b0][1:v][b1][2:v]concat=n=5:v=1:a=0[out]"
-map '[out]' out.mp4

Suponho que você queira que todos os clipes 1,2 e 3 sejam incluídos.

    
por 12.04.2016 / 17:48