J'ai essayé de réaliser une transition en fondu enchaîné entre 2 clips vidéo à l'aide de ffmpeg mais j'ai échoué jusqu'à présent. Je suis nouveau sur ffmpeg et je compte surtout modifier ce que je peux trouver dans la documentation et les exemples existants en ligne. D'après ce que j'ai lu jusqu'à présent, utiliser le filtre de fusion ou de superposition devrait aider à atteindre mes objectifs, mais je n'arrive pas à comprendre. les détails de la ligne de commande pour le faire fonctionner.
Les filtres de fondu et de concaténation sont parfaits pour le fondu de la vidéo 1, le fondu en entrée de la vidéo 2 et la concaténation des transitions de type clip 2 en 1 mais j'apprécierais de l'aide pour obtenir une commande permettant de passer de la vidéo 1 à la vidéo 2 sans qu'aucun ne passe au noir entre les deux. Je n'ai pas pu trouver d'exemples pour ce problème, où que ce soit, peut-être que je cherche les mauvais mots clés ...?
Plus spécifiquement, mes vidéos sont au format MP4 (vidéo h264, pas de son, au cas où ça compte), chacune dure 5 secondes et je suis après une transition d’environ. 4.5s de vidéo 1 à 0.5s de vidéo 2.
Semblable à ce que fait ce tutoriel en utilisant MLT et les cadres (voir 2:25 pour un exemple de fondu), bien que je cherche un moyen de faire cela dans ffmpeg sans appeler d’autres progs. http://www.youtube.com/watch?v=3PRZ9L_KLdI
N'importe quel pointeur ou peut-être une ligne de commande pour obtenir un fondu comme celui-ci serait très apprécié, merci beaucoup!
Je suggère de faire de cette façon:
Donc, la commande pour ajouter un fondu enchaîné à 2 vidéos (5 secondes) devrait être:
ffmpeg -i 1.mp4 -i 2.mp4 -f lavfi -i color=black -filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v]scale=960x720,trim=duration=9[over];\
[over][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
-vcodec libx264 -map [outv] out.mp4
Cela fera disparaître la première vidéo en alpha à la 4ème seconde (st = 4) pendant 1 seconde (d = 1), puis la seconde à 0 seconde (st = 0) pendant 1 seconde (d = 1) et déplacera son affichage. temps écoulé à 4 secondes (+ 4/To). Ensuite, nous venons de couper 9 secondes de couleur noire, de l’adapter à la taille de la vidéo et de la superposer.
J'espère que ça aide.
Voici comment j'ai fait:
1) Ajoutez un fondu sortant (clair à foncé) à la fin du 1er et un fondu entrant (foncé à clair) au début du 2ème:
ffmpeg -i 1.mp4 -y -vf fade=out:76:24 1f.mp4
ffmpeg -i 2.mp4 -y -vf fade=in:0:25 2f.mp4
76:24 signifie que le fondu sortant commence à l'image 76 et se termine 24 images plus tard = 1 fondu à la fermeture.
0:25 signifie que le fondu démarrera l'image 0 et se terminera 25 images plus tard.
2) Fusionner les 2 vidéos
Convertir tout en TS
ffmpeg -i 1f.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 1f.ts
ffmpeg -i 2f.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 2f.ts
Fusionner
ffmpeg -i "concat:1f.ts|2f.ts" -bsf:a aac_adtstoasc -c copy output.mp4
Grâce à:
http://www.bogotobogo.com/FFMpeg/ffmpeg_fade_in_fade_out_transitions_effects_filters.php
ffmpeg-concat est le moyen le plus simple d'accomplir ce que vous voulez et vous permet d'utiliser un tas de transitions OpenGL sexy, la valeur par défaut étant le fondu enchaîné.
ffmpeg-gl-transition est un filtre personnalisé ffmpeg qui vous permet d'utiliser GLSL pour une transition en douceur entre deux flux vidéo. Ce filtre est nettement plus facile à utiliser et à personnaliser que les alternatives répertoriées ici.
Ce filtre prend en charge une grande liste de types de transition, la valeur par défaut étant le fondu enchaîné.
./ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex "gltransition=duration=4:offset=1.5" out.mp4