Cum să folosești concat filter complex în FFmpeg
In this tutorial, you'll learn about Cum să folosești concat filter complex în FFmpeg. We cover key concepts, practical examples, and best practices.
Problema
Comanda ta FFmpeg cu filter_complex pentru concatenare eșuează cu Filter 'concat' has an unconnected output sau Input link parameters mismatch. Concat filter complex necesită conectarea corectă a streamurilor video și audio cu parametri compatibili.
Soluția rapidă
Fix 1: Concat Filter cu Scalare Automată
GRESIT — concat filter fără scalare produce erori când rezoluțiile diferă:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" output.mp4
# Filter 'concat' has an unconnected output
CORECT — etichetează corect ieșirile și scalează:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setdar=16/9[v0]; \
[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setdar=16/9[v1]; \
[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 2: Concat cu Fade Tranziție
ffmpeg -i input1.mp4 -i input2.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]; \
[0:a][1:a]acrossfade=d=1[outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 3: Concat cu Multiple Streamuri Audio
ffmpeg -i video1.mp4 -i audio1.mp3 -i video2.mp4 -i audio2.mp3 -filter_complex \
"[0:v]scale=1920:1080[v0]; [2:v]scale=1920:1080[v1]; \
[v0][1:a][v1][3:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 4: Concat Filter cu Fără Audio
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
"[0:v][1:v]concat=n=2:v=1:a=0[outv]" \
-map "[outv]" -map "[outa]" output.mp4
# a=0 dezactivează concatenarea audio
Fix 5: Concat cu 3+ Fișiere
ffmpeg -i clip1.mp4 -i clip2.mp4 -i clip3.mp4 -filter_complex \
"[0:v]scale=1280:720[v0]; [1:v]scale=1280:720[v1]; [2:v]scale=1280:720[v2]; \
[v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
# n=3 indică numărul total de fișiere de intrare
Fix 6: Debug Filter Graph
ffmpeg -v debug -i input1.mp4 -i input2.mp4 -filter_complex \
"[0:v]scale=1920:1080[v0]; [1:v]scale=1920:1080[v1]; \
[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" -t 5 -f null -
# Afișează graful de filtre pentru depanare
Folosește DodaTech's Filter Graph Visualizer pentru a proiecta și testa lanțuri complexe de filtere interactiv.
Prevenție
- Etichetează întotdeauna toate intrările și ieșirile filtrelor.
- Folosește parametrul
n=corect (numărul total de inputuri). - Verifică
v=1:a=1— asigură-te că numărul streamurilor corespunde. - Scalează toate streamurile video la aceeași rezoluție înainte de concat.
- Testează cu
-t 5și-f null -pentru depanare rapidă.
Greșeli comune
- Etichete lipsă pentru ieșirile filtrului — concat filter necesită
[outv][outa]pentru toate ieșirile. - n= incorect — parametrul
n=trebuie să reflecte numărul exact de fișiere de intrare. - Streamuri audio lipsă — dacă un fișier nu are audio, concat filter eșuează. Folosește
a=0. - Parametri de intrare incompatibili — rezoluții, framerate-uri sau sample rate-uri diferite.
- Neglijarea parametrului -map — ieșirile filtrului trebuie mapate cu
-map "[eticheta]".
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ă o comandă complexă care concatenează 3 clipuri, fiecare cu rezoluție diferită, scalându-le la 1080p și adăugând o tranziție fade între ele.
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