Fade e Overlay
Você pode encadear um filtro de desbotamento e sobreposição da seguinte maneira:
ffmpeg -i input.mp4 -f image2 -loop 1 -r 24 -i banner.png -filter_complex \
'[1:v]fade=out:96:24:alpha=1[wm];[0:v][wm]overlay=10:10[outv]' \
-map [outv] -map 0:a -c:a copy -c:v libx264 -preset veryfast output.mp4
-f image2 -loop 1 -r 24 -i banner.png
transforma banner.png em um vídeo de 24 fps, dando um loop ao infinito.
[1:v]fade=out:96:24:alpha=1[wm]
faz a marca d'água começar a desaparecer no 96º quadro (4 segundos a 24fps) e desbotar em 24 quadros (1 segundo @ 24fps); e irá diminuir o canal alfa , o que significa que a marca d'água se tornará transparente em vez de desvanecer para um bloco preto. Isso cria uma saída rotulada [wm]. Observe que o menor valor que você pode atingir pelo comprimento do fade é de 1 quadro.
[0:v][wm]overlay=0:0[outv]
sobrepõe o banner na entrada.mp4, criando uma saída com o rótulo [outv].
-map [outv] -map 0:a
diz ao ffmpeg para usar [outv] e o áudio da entrada.mp4 na saída. O resto das opções são opções de codificação.
Você pode fazer o banner desaparecer em e , encadeando dois filtros de desvanecimento. A seguir, o banner desaparecerá, iniciando no quadro 96, com uma duração de 24 quadros; e, em seguida, desaparecer a partir do quadro 216 (9 segundos @ 24fps), para uma duração de 24 quadros:
ffmpeg -i input.mp4 -f image2 -loop 1 -r 24 -i banner.png -filter_complex \
'[1:v]fade=in:96:24:alpha=1,fade=out:216:24:alpha=1[wm];[0:v][wm]overlay=10:10[outv]' \
-map [outv] -map 0:a -c:a copy -c:v libx264 -preset veryfast output.mp4
Stream Seeking com -ss
e -t
Isso alcança um resultado final semelhante, mas requer a criação de arquivos intermediários maiores. No entanto, ele transcodifica apenas a primeira seção de cinco segundos e, portanto, economizará o poder de processamento e possivelmente será mais rápido.
Isso envolve cortar o vídeo em dois bits usando -t
e -ss
, colocando a marca d'água no primeiro vídeo de cinco segundos e, em seguida, concatenar os dois vídeos juntos.
ffmpeg -i input.mp4 -i watermark.png \
-filter_complex '[0:v][1:v]overlay[outv]' -map [outv] -map 0:a \
-t 5 -c:a copy -c:v libx264 -crf 22 -preset veryfast start.mp4
ffmpeg -i input.mp4 -ss 5 -c copy end.mp4
Em seguida, concatene os dois vídeos usando o demuxer de concatenação: primeiro crie um arquivo chamado inputs.txt, contendo as seguintes linhas:
file 'start.mp4'
file 'end.mp4'
Então,
ffmpeg -f concat -i inputs.txt -c copy output.mp4