Skip to content

Cum să adaugi tranziții între clipuri cu FFmpeg

DodaTech Updated 2025-01-15 2 min read

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 acrossfade pentru tranziție audio lină.
  • Testează tranziția pe un segment scurt înainte de procesarea completă.
  • Verifică durata totală cu ffprobe după adăugarea tranzițiilor.

Greșeli comune

  1. Offset incorect pentru xfade — offset-ul trebuie să fie durata_clip1 - durata_tranziției.
  2. Rezoluții diferite între clipuri — xfade necesită aceeași rezoluție pentru ambele intrări.
  3. Fără acrossfade audio — tranziția video este lină dar audio taie brusc.
  4. Format yuv420p lipsă — unele formate de ieșire nu acceptă pix_fmt-ul implicit.
  5. 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

### Ce tipuri de tranziții suportă filtrul xfade?

xfade suportă peste 30 de tipuri: fade, slideleft, slideright, slideup, slidedown, circlecrop, rectcrop, fadeblack, fadewhite, pixelize, wipeleft, wiperight, etc.

Cum sincronizez tranziția audio cu cea video?

Folosește acrossfade cu aceeași durată ca xfade: xfade=duration=1... și acrossfade=d=1.... Astfel, ambele tranziții se termină simultan.

De ce tranziția mea apare doar pe jumătate?

Offset-ul este prea aproape de sfârșitul clipului. Asigură-te că offset + duration ≤ durata_totală_clip1. Verifică durata cu ffprobe.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro