Cum să adaugi tranziții între clipuri cu FFmpeg
In this tutorial, you'll learn about Cum să adaugi tranziții între clipuri cu FFmpeg. We cover key concepts, practical examples, and best practices.
Problema
Vrei să creezi un montaj video cu tranziții line între clipuri, dar FFmpeg taie brusc între ele fără efecte de trecere. Tranzițiile precum fade, crossfade sau slide necesită filtre speciale și parametri corecți.
Soluția rapidă
Fix 1: Crossfade cu xfade Filter
GRESIT — concatenare directă fără tranziție:
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
# (tranziția este bruscă — fără efect de trecere)
CORECT — folosește filtrul xfade pentru tranziție lină:
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v]scale=1920:1080,v0]; [1:v]scale=1920:1080[v1]; \
[v0][v1]xfade=transition=fade:duration=1:offset=9,format=yuv420p[outv]" \
-map "[outv]" -map 0:a? output.mp4
# offset=9 = momentul din clip1 când începe tranziția (cu 1s înainte de final)
Fix 2: Crossfade Audio cu acrossfade
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v]scale=1920:1080[v0]; [1:v]scale=1920:1080[v1]; \
[v0][v1]xfade=transition=fade:duration=1:offset=9[outv]; \
[0:a][1:a]acrossfade=d=1[outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 3: Tipuri de Tranziții xfade
# Fade:
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v][1:v]xfade=transition=fade:duration=0.5:offset=9.5[outv]" \
-map "[outv]" output.mp4
# Slide from right:
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v][1:v]xfade=transition=slideright:duration=0.5:offset=9.5[outv]" \
-map "[outv]" output.mp4
# Pixelize:
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v][1:v]xfade=transition=pixelize:duration=0.5:offset=9.5[outv]" \
-map "[outv]" output.mp4
Fix 4: Fade In/Out la Început și Sfârșit
ffmpeg -i input.mp4 -filter_complex \
"[0:v]fade=t=in:st=0:d=1,fade=t=out:st=8:d=1[vout]; \
[0:a]afade=t=in:st=0:d=1,afade=t=out:st=8:d=1[aout]" \
-map "[vout]" -map "[aout]" output.mp4
Fix 5: Tranziții Multiple cu 3+ Clipuri
ffmpeg -i clip1.mp4 -i clip2.mp4 -i clip3.mp4 -filter_complex \
"[0:v]scale=1920:1080[v0]; [1:v]scale=1920:1080[v1]; [2:v]scale=1920:1080[v2]; \
[v0][v1]xfade=transition=fade:duration=1:offset=9[t1]; \
[t1][v2]xfade=transition=fade:duration=1:offset=18[outv]" \
-map "[outv]" output.mp4
# offset pentru a doua tranziție = durata clip1 + durata clip2 - durata tranziției
Folosește DodaTech's Video Editor pentru a adăuga tranziții vizuale printr-o interfață drag-and-drop.
Prevenție
- Calculează offset-ul corect:
durata_clip1 - durata_tranziției. - Asigură-te că toate clipurile au aceeași rezoluție înainte de xfade.
- Folosește
acrossfadepentru tranziție audio lină. - Testează tranziția pe un segment scurt înainte de procesarea completă.
- Verifică durata totală cu
ffprobedupă adăugarea tranzițiilor.
Greșeli comune
- Offset incorect pentru xfade — offset-ul trebuie să fie
durata_clip1 - durata_tranziției. - Rezoluții diferite între clipuri — xfade necesită aceeași rezoluție pentru ambele intrări.
- Fără acrossfade audio — tranziția video este lină dar audio taie brusc.
- Format yuv420p lipsă — unele formate de ieșire nu acceptă pix_fmt-ul implicit.
- Suprapunere greșită — offset prea devreme sau prea târziu cauzează tranziții vizibile incorect.
Aceste greșeli apar frecvent în codul FFmpeg real. Contribuitorii DodaTech au identificat aceste modele prin analiza proiectelor open-source și a sistemelor de producție.
Exercițiu practic
Creează un montaj din 3 clipuri cu tranziții fade de 0.5 secunde între ele și crossfade audio, apoi măsoară durata totală.
Acest exercițiu întărește conceptele prezentate în acest ghid. Încearcă să-l implementezi înainte de a verifica soluțiile online.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro