Você pode usar o filtro de loop.
ffmpeg -i video -loop 1 -i logo.png -filter_complex
"[1]trim=0:30,fade=in:st=0:d=1:alpha=1,fade=out:st=9:d=1:alpha=1,
loop=999:750:0,setpts=N/25/TB[w];
[0][w]overlay=shortest=1" out.mp4
Primeiro, o fluxo da imagem do logotipo é cortado para uma duração de x
segundos, aqui 30. Em seguida, um fade-in e um fade-out de 1 segundo são aplicados. O fade-out começa em y-1
segundos, aqui 9. Esse resultado é repetido em loop 999 vezes - use um número suficiente para abranger a duração do vídeo. Desde que eu cortei um segmento de 30 segundos, o tamanho do segmento a ser colocado em loop é duration x framerate
, aqui 30 x 25
= 750
. O loop começa no quadro inicial 0
. Finalmente, o filtro de loop não limpa os timestamps, então os setpts são adicionados para produzir uma série monotônica.
O fluxo é então sobreposto no vídeo.