Exemplo 1: Colocar dois vídeos lado a lado.
Assuma que temos 2 vídeos, "a.mp4" e "b.mp4", com a mesma resolução 720x480 pixels. E desejamos colocá-los lado a lado em um único vídeo "out.mp4" de 720x480 pixels. Pode-se usar o seguinte comando:
$ ffmpeg -i a.mp4 -vf "scale=360:480 [inScale]; \
color=c=black@1.0:s=720x480:r=29.75:d=9.0 [bg];\
movie=b.mp4, scale=360:480 [vid2]; \
[bg] [vid2] overlay=360:0 [basis1]; \
[basis1] [inScale] overlay=0:0" out.mp4
A expressão entre parênteses é a descrição do filtro (filtergraph). A partir dessa expressão é possível montar um diagrama de blocos, para entendermos melhor como ele funciona.
O vídeo "a.mp4" é reescalado para metade da largura (causará distorção) e o resultado fica no nó [inScale]. No nó [bg], é criado um fundo preto de tamanho 720x480, com taxa de frame de 29.75 e duração de 9 segundos. No nó [vid2], é introduzido o vídeo "b.mp4" e reescalado. Agora o nó [vid2] é sobreposto ao nó [bg] na posição 360:0. O resultado está no nó [basis1], onde o nó [inScale] será sobreposto na posição 0:0. E o resultado será salvo no arquivo "out.mp4".
Exemplo 2: Colocar um vídeo em cima do outro .
Da mesma forma que o exemplo 1, porém com algumas modificações.
$ ffmpeg -i a.mp4 -vf "scale=720:240 [inScale]; \ color=c=black@1.0:s=720x480:r=29.75:d=9.0 [bg];\ movie=b.mp4, scale=
720:240
[vid2]; \ [bg] [vid2] overlay=0:240 [basis1]; \ [basis1] [inScale] overlay=0:0" out.mp4
A diferença está ao reescalar os vídeos "a.mp4" e "b.mp4", e na posição de sopreposição do segundo vídeo.
Exemplo 3: Dividir a tela para quatro vídeos.
Agora assuma que temos 4 vídeos, "a.mp4", "b.mp4", "c.mp4" e "d.mp4", com a mesma resolução
720x480 pixels. E desejamos colocá-los em duas linhas e duas colunas em um único vídeo
"out.mp4" de 720x480 pixels. Pode-se usar o seguinte comando:
$ ffmpeg -i a.mp4 -vf "scale=360:240 [inScale]; \ color=c=black@1.0:s=720x480:r=29.75:d=9.0 [bg];\ movie=b.mp4, scale=360:240 [vid2]; \ movie=c.mp4, scale=360:240 [vid3]; \ movie=d.mp4, scale=360:240 [vid4]; \ [bg] [vid2] overlay=360:0 [basis1]; \ [basis1] [vid3] overlay=0:240 [basis2]; \ [basis2] [vid4] overlay=360:240 [basis3]; \ [basis3] [inScale] overlay=0:0" out.mp4
O princípio é o mesmo dos exemplos anteriores, só que desta vez com mais dois blocos de sobreposição. Neste exemplo não ocorre distorção nas imagens (mantem a proporção do aspecto). A seguir tem o vídeo resultante do exemplo 3:
Como pode-se observar, existe uma infinidade de variações que pode ser feita com esses filtros do ffmpeg, basta usar a imaginação. ;) Espero ter ajudado.
Como pode-se observar, existe uma infinidade de variações que pode ser feita com esses filtros do ffmpeg, basta usar a imaginação. ;) Espero ter ajudado.
Fontes:
Obrigado
ResponderExcluirSua dica me salvou