Estou tentando adicionar meu logotipo nos primeiros 30 segundos de um vídeo com ffmpeg. Tenho uma chamada de vídeo d1.mp4
e um logotipo chamado logo.png
.
Quando o vídeo começar, a marca d'água deverá estar no canto superior esquerdo ou direito do vídeo e desaparecer após 30 segundos.
Você pode me mostrar como adicioná-lo?
Responder1
ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
"[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
-map 0:a -c:v libx264 -c:a copy -shortest out.mp4
Isso pressupõe que o logotipo é uma única imagem estática com um canal alfa e você deseja sobrepô-lo a um vídeo com uma taxa de quadros de 30.000/1.001 (taxa NTSC). Altere -framerate
para corresponder ao seu vídeo de entrada, se for diferente. Se o seu logotipo for um vídeo, omita -framerate 30000/1001 -loop 1
. Se o logotipo não tiver um canal alfa, adicione um inserindo, por exemplo, format=yuva420p,
imediatamente antes de fade
.
Isso exibirá o logotipo na posição x,y 10,10 por 30 segundos, seguido por um fade out de 1 segundo.
Responder2
Usandooverlay
filtro de vídeopara adicionar um logotipo a um vídeo:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4
Para entender este comando você precisa saber o que é umespecificador de fluxoé e lendo oIntrodução à filtragem FFmpegvai ajudar. [0:v]
refere-se ao(s) fluxo(s) de vídeo da primeira entrada ( video.mp4
) e [1:v]
refere-se ao fluxo de vídeo da segunda entrada ( logo.mp4
). É assim que você pode saber overlay
quais entradas usar. Você pode omitir [0:v][1:v]
e overlay
ainda funcionará, mas é recomendável ser explícito e não confiar em padrões possivelmente desconhecidos.
Por padrão, o logotipo será colocado no canto superior esquerdo.
Usando -codec:a copy
vontadecópia do fluxoo áudio. Isso simplesmente remixa o áudio em vez de recodificá-lo. Pense nisso como um “copiar e colar” do áudio.
Movendo o logotipo
Este exemplo moverá o logotipo 10 pixels para a direita e 10 pixels para baixo:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4
Este exemplo moverá o logotipo 10 pixels do lado direito e 10 pixels para baixo:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4
main_w
refere-se à largura da entrada "principal" (o plano de fundo ou [0:v]
) e overlay_w
refere-se à largura da entrada "sobreposta" (o logotipo ou [1:v]
). Então, no exemplo, isso pode ser traduzido para overlay=320-90-10:10
ou overlay=220:10
.
Cronometrando a sobreposição
Alguns filtros podem lidaredição da linha do tempoque permite que você useexpressões aritméticaspara determinar quando um filtro deve ser aplicado. Consulte ffmpeg -filters
para ver quais filtros suportam a edição da linha do tempo.
Este exemplo mostrará o logotipo por até 30 segundos:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4
Se você quiser desbotar o logotipo, consulteresposta do mark4o.