Como iniciar o vídeo de marca d'água quando ele aparece?

2

Este é o meu cenário:

Quero adicionar um vídeo de marca d'água em outro vídeo, mas quero que a marca d'água comece quando for exibida.

Na verdade, sou capaz de exibir um vídeo de marca d'água e reproduzi-lo desde o começo. Se eu tentar adicionar a marca d'água em um intervalo específico, ela aparecerá corretamente no período especificado, mas a marca d'água será interrompida porque começa quando o vídeo principal é reproduzido.

Este é o comando que estou usando:

ffmpeg -y -i big_buck_bunny.mp4 -i alpha.mov -filter_complex "[1: v]   fade = out: st = 30: d = 1: alfa = 1 [ov]; [0: v] [ov]   sobreposição = 10: main_h-overlay_h-10: enable = entre (t \, 3 \, 5) [v] "-map" [v] "   -map 0: a -c: v libx264 -c: uma cópia fora.mp4

Qualquer ajuda seria apreciada. Obrigado

stuzzo
fonte
1
Bem vindo ao super usuário. Esta questão precisa de um pouco de esclarecimento. Particularmente as declarações "Eu quero que a marca d'água comece quando ela aparecer" e "está parado porque começa quando o vídeo principal é reproduzido." Bem-vindo e boa sorte.
Twisty Impersonator

Respostas:

5

Usar -itsoffset pouco antes da entrada de sobreposição com a mesma quantidade de segundos que você está usando no início do filtro (3 no seu caso)

Isso é manter o fade out filtro que você tinha, mas esse filtro não produz resultados visíveis:

ffmpeg -y -i big_buck_bunny.mp4 -itsoffset 3 -i alpha.mov -filter_complex "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:main_h-overlay_h-10:enable=between(t\,3\,5) [v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy out.mp4

Isto é com 3 entradas (2 sobreposições e uma base) e sem esse outro filtro:

ffmpeg -y -i basevideo.mp4 -itsoffset 3 -i overlay1.mp4 -itsoffset 8 -i overlay2.mp4 -filter_complex "[0:v][1:v] overlay=0:0:enable=between(t\,3\,5) [oa]; [oa][2:v] overlay=0:0:enable=between(t\,8\,10) [ob]"  -map "[ob]" -map 0:a -c:v libx264 -c:a copy output.mp4

Para continuar adicionando vídeos sobrepostos:

  • adicionar -itsoffset **X** -i newinput.mp4 após o último arquivo de entrada.
    • Ordem de arquivos de entrada é importante
    • **X** é o tempo que o vídeo de sobreposição começar jogando (isso não vai exposição a sobreposição, basta iniciar internamente a reprodução do vídeo). Ajuste-o como necessário (provavelmente correspondendo ao valor de **X** no próximo passo)
  • insira outro [**previous_output**][**Y**:v] overlay=0:0:enable=between(t\,**X**\,**Z**) [**new_output**] depois do último bloco.
    • **Y** é o arquivo de entrada Yth, começando em 0 (no meu exemplo, basevideo é 0, overlay1 é 1, overlay2 é 2, etc).
    • **X** é o tempo que a sobreposição exposição no vídeo de saída.
    • **Z** é o tempo que a sobreposição ocultar no vídeo de saída.
    • O tempo é contado para o início do vídeo base, não para o tamanho do vídeo sobreposto. Portanto, faça seus cálculos de duração: se o vídeo sobreposto tiver 2 segundos de duração, **Z** será **X** + 2
  • Ajusta a -map "[**XX**] no final do comando para coincidir com o **new_output**, ou você estará escrevendo para arquivar o passo anterior!

NOTA áudio é agarrado diretamente de basevideo . Os áudios das outras fontes são ignorados e não jogar em tudo.

NuTTyX
fonte
Obrigado! Posso perguntar-lhe uma sugestão de como configurar o comando se tiver mais de uma sobreposição?
stuzzo
@stuzzo melhorou a resposta
NuTTyX
Tudo limpo! Muito obrigado!!!!!!!
stuzzo