ffmpeg: Como colocar múltiplas sobreposições e diminuir a parte superior corretamente

5

Estou tentando colocar várias sobreposições umas em cima das outras e diminuir o topo depois de alguns quadros. Portanto, estou usando 2 arquivos .png que devem ser colocados no vídeo final na seguinte ordem:

fademe.png <-- Topmost overlay, should be faded after some frames

overlay.png <-- second overlay, always visible

movie.mov <-- a movie as the bottom layer

Estou usando este código para criar um .mov codificado em PNG das sobreposições:

ffmpeg -y -loop 1 -i fademe.png -loop 1 -i overlay.png -filter_complex "[0:0]fade=out:25:25[fad];[1:0][fad] overlay" -vframes 55 -vcodec png overlay.mov

Então eu estou usando o ffmbc para colocar o overlay.mov em cima de outro vídeo.

(Estou usando ffmbc porque o resultado final será ProRes4444)

ffmbc -y -threads 0 -i movie.mov -vf "movie=overlay.mov [watermark]; [in][watermark] overlay [out]"  -vcodec libx264 faded.mp4

O vídeo de saída parece legal até que o desbotamento comece e fademe.png [fad] pareça desbotado para branco e fazendo coisas estranhas nas cores abaixo até que ele desapareça.

Quando estou alterando o pedido no último overlay de [1:0][fad] overlay para [fad][1:0] overlay , então é assim:

ffmpeg -y -loop 1 -i fademe.png -loop 1 -i overlay.png -filter_complex "[0:0]fade=out:25:25[fad];[fad][1:0] overlay" -vframes 55 -vcodec png overlay.mov

o desbotamento parece correto, mas overlay.png [1:0] não deve ser a camada mais alta.

Meu palpite é que algo errado acontece com o canal alfa em minha primeira tentativa.

Alguma sugestão de como resolver este problema?

    
por evilheinz 21.03.2013 / 23:40

2 respostas

1

Acho que encontrei uma solução:

Primeiro, criei um filme intermediário do logotipo de desvanecimento

ffmpeg -y -loop 1  -i fademe.png -filter_complex "fade=out:25:25" -vframes 55 -vcodec png fademe.mov

então eu usei esse comando com ffmbc

ffmbc -i movie.mov -vf "movie=overlay.png [over]; movie=fademe.mov [fade]; [in][over] overlay [inter]; [inter][fade] overlay [out]" -vcodec libx264 out.mp4

... Heureka !!!

O logotipo em cima da composição está desaparecendo de forma agradável e suave!

    
por 22.03.2013 / 18:53
7

Não deve ser necessário usar dois comandos e criar um arquivo intermediário com um canal alfa. Um único comando com 3 entradas, 2 filtros de sobreposição e um filtro de desvanecimento com alpha=1 deve fazê-lo:

ffmpeg -y -i movie.mov -loop 1 -i overlay.png -loop 1 -i fademe.png \
-filter_complex '[0:v][1:v] overlay [V1]; \
[2:v] fade=out:25:25:alpha=1 [V2]; [V1][V2] overlay' \
faded.mp4
    
por 22.03.2013 / 02:17