# 1 Pour estomper simultanément l'entrée / la sortie audio:
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
Les temps de fondu sont en secondes .
# 2 Automatiquement? Non, mais voir la solution de contournement ci-dessous
Vous pouvez d'abord exécuter ffprobe pour obtenir la durée.
ffprobe -i clip.mp4 -show_entries stream=codec_type,duration -of compact=p=0:nk=1
Vous obtiendrez quelque chose comme ceci:
video|13.556000
audio|13.816000
Vous pouvez ensuite utiliser ce qui précède pour placer vos fondus. Ces temps sont en secondes.
solution de contournement
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 a une sseof
option qui permet de rechercher une entrée depuis la fin. Nous pouvons l'utiliser pour atteindre notre objectif. Donc, nous alimentons l'entrée deux fois, la deuxième fois n'ingérant que la dernière seconde. Nous demandons à FFmpeg de conserver les horodatages, afin que ffmpeg préserve la position temporelle de cette portion de queue.
Nous appliquons un fondu à cette queue, puis superposons le résultat sur l'entrée complète. Puisqu'il s'agit du même fichier multimédia, le premier plan recouvre complètement l'arrière-plan et, depuis qu'il a copyts
été appliqué, la superposition se produit sur le cadre identique correspondant dans l'entrée d'arrière-plan.
Pour l'audio, nous créons un audio factice vierge d'une durée de 2 secondes, puis appliquons un fondu audio de l'audio principal à cet audio factice. Étant donné que le 2e audio est vierge, il s'agit en fait d'un fondu sortant pour l'entrée principale. Le -shortest
est ajouté pour laisser de côté certaines parties de l'audio factice après le fondu enchaîné.