Cum să concatenezi fișiere cu codecuri diferite în FFmpeg
In this tutorial, you'll learn about Cum să concatenezi fișiere cu codecuri diferite în FFmpeg. We cover key concepts, practical examples, and best practices.
Problema
Ai fișiere video cu codecuri, rezoluții sau framerate-uri diferite și comanda de concatenare eșuează cu Stream parameters mismatch sau First video frame damaged. Concatenarea directă cu -c copy nu funcționează când codecurile diferă.
Soluția rapidă
Fix 1: Concat Filter pentru Codecuri Diferite
GRESIT — încercând concat protocol cu codecuri diferite:
ffmpeg -i "concat:file1.mp4|file2.avi" -c copy output.mp4
# Stream parameters mismatch — nu funcționează
CORECT — folosește concat filter care transcodă automat:
ffmpeg -i file1.mp4 -i file2.avi -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
Fix 2: Rezoluții Diferite — Scalare Automată
GRESIT — concat filter cu rezoluții diferite produce cadre deformate:
ffmpeg -i file1.mp4 -i file2.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
# (dacă rezoluțiile diferă, output-ul va fi distorsionat)
CORECT — scalează înainte de concatenare:
ffmpeg -i file1.mp4 -i file2.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]" output.mp4
Fix 3: Frame Rate Diferit
ffmpeg -i file1.mp4 -i file2.mp4 -filter_complex \
"[0:v]fps=30[v0]; [1:v]fps=30[v1]; \
[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 4: Concat pentru Streamuri Fără Audio
ffmpeg -i file1.mp4 -i file2.mp4 -filter_complex \
"[0:v][1:v]concat=n=2:v=1:a=0[outv]" \
-map "[outv]" output.mp4
# a=0 indică faptul că nu există streamuri audio
Fix 5: Codecuri Audio Diferite
ffmpeg -i file1.mp4 -i file2.mp4 -filter_complex \
"[0:v][0:a]aresample=48000[av]; [1:v][1:a]aresample=48000[bv]; \
[av][bv]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
Folosește DodaTech's Format Converter pentru a standardiza toate fișierele înainte de concatenare.
Prevenție
- Standardizează codecurile, rezoluțiile și framerate-urile înainte de concatenare.
- Folosește concat filter în loc de concat protocol când fișierele diferă.
- Adaugă filtre de scalare și fps înainte de concatenare.
- Verifică streamurile audio — asigură-te că toate au același sample rate.
- Testează pe un segment scurt de 5 secunde din fiecare fișier.
Greșeli comune
- Folosirea concat protocol pentru fișiere cu codecuri diferite — protocolul cere parametri identici.
- Neglijarea scalării — rezoluții diferite produc output distorsionat.
- Ignorarea framerate-ului — framerate-uri diferite cauzează sync-uri greșite.
- Omisiunea streamurilor audio — unele fișiere fără audio sparg filtrul concat.
- Lipsa etichetelor corecte — filter_complex necesită etichete precise pentru conectarea streamurilor.
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
Scrie o comandă care concatenează 2 fișiere cu codecuri și rezoluții diferite, aplicând scalare și sincronizare audio automată.
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