Faça um efeito caleidoscópio com ffmpeg

Exemplodecomando
ffmpeg-ivideo.mkv-loop1-imask.png-filter_complex\"[1:v]alphaextract,split[a1][a2]; \
[0:v][a1]alphamerge,transpose=1[e]; \
[0:v][a2]alphamerge,transpose=2[w]; \
[0:v]vflip,hflip[s]; \
[0:v]pad=ih*2:ih*2:x=(ow-iw)/2[n]; \
[n][s]overlay=W/2-w/2:W/2[bg]; \
[bg][e]overlay=W/2:H/2-h/2[bg2]; \
[bg2][w]overlay=0:H/2-h/2" \
-codec:a copy output.mkv
Filtros FFmpeg usados
-
alphaextractealphamergepara o componente alfa -
splitpara fazer várias cópias do componente alfa -
transpose/vflip/hflipou qualquer combinação de filtros semelhantes de sua preferência -
padpara tornar o plano de fundo "tela" -
overlaypara colocar cada vídeo na tela
Notas
-
Use um
ffmpegrecente. Ou faça o download de uma compilação Linux deffmpegou siga um passo a passo guide para compilarffmpeg. -
Você precisará criar uma imagem que contenha uma máscara alfa. Ele precisa ter o mesmo tamanho de quadro da entrada de vídeo, portanto, se
video.mkvfor 1920x1080,mask.pngtambém precisará ser 1920x1080. Você pode baixar a máscara alfa deste exemplo. -
splitfoi usado porque não consegui reutilizar com êxito o mesmo rótulo de link para a saídaalphaextract, e nunca usei os filtrosalpha*antes, portanto, o exemplo poderia ser encurtado. -
A cor de fundo preta do filtro
padé visível nos cantos. O filtrocroppode ser usado para removê-lo, se você preferir. -
O áudio é copiado em fluxo em vez de ser recodificado.
-
Consulte o FFmpeg e o x264 Encoding Guide para obter informações adicionais sobre como controlar a qualidade da saída.
