Como adicionar meu logotipo nos últimos 60 segundos em um vídeo com ffmpeg?

0

Eu pesquisei por dias para encontrar essa solução. Tudo o que encontrei foi maneiras de adicionar o logotipo nos primeiros segundos ou após alguns segundos ou apenas entre certas partes (por exemplo, entre 30 e 210 segundos)

Portanto, a questão principal é: Como adicionar meu logotipo nos últimos 60 segundos em um vídeo com ffmpeg? Eu tenho muitos vídeos de diferentes tamanhos e simplesmente quero que os últimos 60 segundos sejam sobrepostos com o logotipo .png (neste caso também na parte inferior esquerda da tela)

Atualmente, estou usando o que você vê abaixo, que funciona bem (sempre exibe o logotipo, exceto entre 30 e 210 segundos de vídeos), mas, como mencionei no título, ele não faz exatamente o que eu quero.

-i video.mp4 -vf "movie=/logo.png [watermark]; [in][watermark] overlay=1:main_h-overlay_h-1:enable=not(between'(t,30,210)') [out]"
    
por razz 25.08.2016 / 16:25

2 respostas

2

Existe um método, provavelmente ineficiente, para fazer isso, que funcionou aqui em um teste, mas pode falhar quando os timestamps de entrada são irregulares, ou seja, começam de um valor diferente de zero.

Modelo básico é

ffmpeg -i in.mp4 -sseof -60 -copyts -i in.mp4 -loop 1 -i logo.png -filter_complex "[1][2]overlay=shortest=1[logo];[0][logo]overlay" out.mp4

O vídeo é inserido duas vezes. Na segunda entrada, a opção sseof é configurada, o que permite buscar usando um intervalo de tempo medido a partir do final. É claro que, a menos que especificado de outra forma, o FFmpeg irá redefinir os timestamps de entrada, então copyts está configurado para preservar a entrada TS.

Primeiro, o logotipo é sobreposto no vídeo aparado e esse resultado é sobreposto na primeira entrada. Como os timestamps são preservados, os quadros estão alinhados e a finalidade é alcançada.

    
por 25.08.2016 / 22:41
1

overlay e enable não têm a capacidade de fazer referência ao final ou à duração do vídeo. Você precisará usar um comando adicional (provavelmente ffprobe e grep , como descrito nesta resposta ) para extrair a duração, use isso para gerar o comando ffmpeg com os valores de between corretos.

    
por 25.08.2016 / 18:08

Tags