Ceci est la commande complète, à condition d'un fichier vidéo d'entrée, du nom vinput.mp4, et un fichier audio, nommé ainput.wav:
ffmpeg -y -i vinput.mp4 -i ainput.wav -filter_complex "\
[1:a]aloop=-1:2e+09[aloop];\
[aloop]aformat=channel_layouts=mono,atrim=end=2[atrim];\
[atrim]adelay=2000[afinal];\
[afinal]afade=t=out:st=3.5:d=0.5[afinal]" \
-shortest -map "[afinal]" -map 0:v output.mp4
est Ci-dessous l'explication de chaque étape:
[1:a]aloop=-1:2e+09[aloop]
boucle mon audio un nombre infini de fois (-1), et répéter le nombre maximum de cadres possibles (2e + 09) (je n'ai pas trouvé un moyen t dire la commande de ju st répéter l'audio en pleine ...
[aloop]aformat=channel_layouts=mono,atrim=end=2[atrim]
Cela prend l'audio en boucle de l'instruction précédente (aLoop) et les garnitures principalement pour durer seulement 2 secondes.
[atrim]adelay=2000[afinal]
Cela retardera le début de l'audio en 2000 millisecondes (2 secondes), ce qui en fait commencer à jouer à la deuxième seconde de la vidéo.
[afinal]afade=t=out:st=3.5:d=0.5[afinal]
Cela va disparaître notre audio, à partir du fondu le 4 secondes de la vidéo, et de faire la fadeout dernière pendant 0,5 seconde, meanind le son disparaîtra de la deuxième 3,5 à 4.
-shortest
Comme nous avons un flux audio qui est répété indéfiniment, nous devons dire à ffmpeg quand arrêter l'encodage, ceci est fait par le tag, qui dit à ffmpeg que nous attendons que le résultat final dure aussi longtemps que l'entrée la plus courte reçu (dans le cas, l'entrée vidéo).
-map "[afinal]" -map 0:v
Comme Samuel Williams gentiment indiqué dans his answer, cette option indique ffmpeg quels flux nous voulons copier sur la sortie générée, dans ce cas, nous voulons avoir à la fois l'audio final (final) et le flux vidéo source (0: v).
Merci Samuel, oublié d'expliquer cette partie! Merci de partager :) –
Devrais-je ajouter ceci à la réponse originale pour compiler toutes les informations au même endroit? –
Bien sûr! Assurez-vous de me créditer, et reliez ma réponse. –