Cum să adaugi crossfade între clipuri cu FFmpeg
In this tutorial, you'll learn about Cum să adaugi crossfade între clipuri cu FFmpeg. We cover key concepts, practical examples, and best practices.
Problema
Vrei să creezi o tranziție lină (crossfade) între două clipuri video, dar comanda ta produce o întrerupere sau tranziția video nu se sincronizează cu cea audio.
Soluția rapidă
Fix 1: Crossfade Video Simplu cu xfade
GRESIT — xfade fără parametrii de durată și offset:
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v][1:v]xfade[outv]" -map "[outv]" output.mp4
# (lipsește offset-ul și durata — comportament imprevizibil)
CORECT — specifică tranziția, durata și offset-ul:
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]" \
-map "[outv]" output.mp4
# offset = durata_clip1 - durata_tranziției
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
# acrossfade=d=1 — durata crossfade-ului audio (1 secundă)
Fix 3: Tipuri de Tranziții Crossfade
# Fade clasic:
[0:v][1:v]xfade=transition=fade:duration=1:offset=9
# Fade prin negru:
[0:v][1:v]xfade=transition=fadeblack:duration=1:offset=9
# Fade prin alb:
[0:v][1:v]xfade=transition=fadewhite:duration=1:offset=9
# Pixelizare:
[0:v][1:v]xfade=transition=pixelize:duration=1:offset=9
# Dissolve:
[0:v][1:v]xfade=transition=rectcrop:duration=1:offset=9
Fix 4: Crossfade 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]; \
[0:a][1:a]acrossfade=d=1[t1a]; \
[t1a][2:a]acrossfade=d=1[outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 5: Crossfade cu Rezoluții Diferite
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex \
"[0:v]scale=1920:1080[v0]; [1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[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
Folosește DodaTech's Crossfade Creator pentru a previzualiza și ajusta tranzițiile între clipuri.
Prevenție
- Calculează offset-ul:
durata_clip1 - durata_crossfade. - Sincronizează durata xfade cu acrossfade.
- Toate clipurile trebuie să aibă aceeași rezoluție (sau scalează-le).
- Testează cu 2 clipuri scurte înainte de a procesa întregul montaj.
- Verifică durata totală după crossfade.
Greșeli comune
- Offset incorect — crossfade-ul începe prea devreme sau prea târziu.
- Crossfade video fără acrossfade audio — imaginea se amestecă lin dar audio taie brusc.
- Rezoluții diferite — xfade eșuează dacă intrările au dimensiuni diferite.
- Transparență lipsă — formatul de ieșire trebuie să suporte alpha pentru anumite tranziții.
- Calcul greșit al offset-ului pentru al 3-lea clip — offset-ul se acumulează.
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 2 clipuri cu crossfade de 1.5 secunde (video + audio), cu tranziție fadeblack, și măsoară durata totală a output-ului.
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