enfraqueça em png com transparência em um vídeo mp4

1

Estou tentando sobrepor um arquivo png com transparência em um vídeo mp4

o vídeo original é 20seg e eu quero sobrepor o PNG transparente de 00:10 a 00:20 do vídeo original, com as 00:10 - 00:14 para aparecer.

     0s                                10s      14s                       20s
video |---------------------------------+--------+-------------------------|
png   | . . . . . . . . . . . . . . . . +========+-------------------------|
                                        |        |                         |
                    start png fade-in _/         |                         |
                                                 |                         |
                                end png fade-in _/                         |
                                                     end of .png overlay _/

Não consigo criar o efeito png fadein. Eu tentei criar um mov transparente com

ffmpeg -loop 1 -i file.png -frames:v 300 -vf 'fade=in:0:120' \
           -pix_fmt rgba -vcodec png  output.mov

e juntando os 2 arquivos com

../ffmpeg -y -i video.mp4 -i output.mov -filter_complex \
            "[0:v][1:v] overlay=170:150:enable='between(t,10,20)'" final.mp4

mas o vídeo final exibe o movimento em um flash sem desvanecer.

Há algo que eu esteja sentindo falta?

Obrigado antecipadamente,

    
por papas-source 11.12.2014 / 12:30

1 resposta

3

Você não precisa criar o movimento de sobreposição como uma etapa separada.

Primeiro crie a sobreposição como um filme desta forma:

-loop 1 -i watermark.png

Em seguida, use um filtro de atenuação para aparecer por 4 segundos (ou seja, 100 quadros):

fade=in:0:100

Em seguida, adie por 10 segundos para começar mais tarde desta forma:

setpts=PTS-STARTPTS+10/TB

Seu comando então se torna:

ffmpeg -i video.mp4 -loop 1 -i watermark.png -filter_complex \  
"[1:v]fade=in:0:100[v1]; [0:v]setpts=PTS-STARTPTS[v0];  \  
[v1]setpts=PTS-STARTPTS+10/TB[v3];[v0][v3]overlay=eof_action=pass[out1]"  \  
-map [out1] <other parameters> overlaidoutput.mp4

A sobreposição continuará até o final. E, claro, você pode usar muitos parâmetros de ajuste fino na seção " outros parâmetros ".

NOTA: usei 100 quadros por 4 segundos porque usei 25 fps PAL. Você pode mudar isso para 120 frames se trabalhar em 30 fps.

Se você precisar encerrar a sobreposição em um ponto de tempo específico, também poderá usar o parâmetro enable :

ffmpeg -i video.mp4 -loop 1 -i watermark.png -filter_complex \  
"[1:v]fade=in:0:100[v1]; [0:v]setpts=PTS-STARTPTS[v0];  \  
[v1]setpts=PTS-STARTPTS+10/TB[v3];  \  
[v0][v3]overlay=enable='between(t,10,12)':eof_action=pass[out1]"  \  
-map [out1] <other parameters> overlaidoutput.mp4  

Isso termina a sobreposição em 12 segundos. Certifique-se de estar usando o ffmpeg ver 2 ou superior.

    
por 14.12.2014 / 14:22