# 1 Para diminuir / diminuir simultaneamente o áudio:
ffmpeg -i clip.mp4 -vf 'fade=in:0:30,fade=out:960:30'
-af 'afade=in:st=0:d=1,afade=out:st=32:d=1'
-c:v libx264 -crf 22 -preset veryfast fadeInOut.mp4
Os tempos finais são em segundos .
2 automaticamente? Não. Mas veja a solução alternativa abaixo
Você pode primeiro executar o ffprobe para obter duração.
ffprobe -i clip.mp4 -show_entries stream=codec_type,duration -of compact=p=0:nk=1
Você obterá algo como isto:
video|13.556000
audio|13.816000
Em seguida, você pode usar o acima para colocar seus desbotamentos. Estes tempos são em segundos.
Gambiarra
ffmpeg -i clip.mp4 -sseof -1 -copyts -i clip.mp4 -filter_complex
"[1]fade=out:0:30[t];[0][t]overlay,fade=in:0:30[v];
anullsrc,atrim=0:2[at];[0][at]acrossfade=d=1,afade=d=1[a]"
-map "[v]" -map "[a]" -c:v libx264 -crf 22 -preset veryfast -shortest fadeInOut.mp4
FFmpeg tem uma sseof
opção que permite buscar uma entrada do final. Podemos usar isso para atingir nosso objetivo. Então, alimentamos a entrada duas vezes, com a segunda vez ingerindo apenas o último segundo. Dizemos ao FFmpeg para preservar os carimbos de data e hora, para que o ffmpeg preserve a posição temporal dessa parte da cauda.
Aplicamos um desbotamento a essa cauda e sobrepomos o resultado na entrada completa. Como são o mesmo arquivo de mídia, o primeiro plano cobre completamente o plano de fundo e, como copyts
foi aplicada, a sobreposição ocorre no quadro idêntico correspondente na entrada do plano de fundo.
Para o áudio, criamos um áudio fictício em branco com duração de 2 segundos e, em seguida, aplicamos um crossfade de áudio do áudio principal para esse áudio fictício. Como o 2º áudio está em branco, isso é, na verdade, um desvanecimento da entrada principal. A -shortest
é adicionado a sair para fora porções do áudio manequim após o cruzamento de FADE ocorreu.