Cum să concatenezi segmente video cu FFmpeg (Concat Demuxer)
In this tutorial, you'll learn about Cum să concatenezi segmente video cu FFmpeg (Concat Demuxer). We cover key concepts, practical examples, and best practices.
Problema
Ai mai multe segmente video pe care vrei să le unești într-un singur fișier. Concat demuxer-ul din FFmpeg oferă cea mai rapidă metodă, dar necesită formate identice și o listă de fișiere corectă.
Soluția Rapidă
Fix 1: Concat cu demuxer (recomandat)
GREȘIT — unirea manuală cu instrumente nespecializate:
cat part1.mp4 part2.mp4 > combined.mp4
# Corupe fișierul MP4
CORECT — folosește concat demuxer-ul:
# Creează fișierul listă
echo "file 'part1.mp4'" > list.txt
echo "file 'part2.mp4'" >> list.txt
echo "file 'part3.mp4'" >> list.txt
# Concatenare
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
Fix 2: Concat cu filter complex
ffmpeg -i part1.mp4 -i part2.mp4 -i part3.mp4 \
-filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
Fix 3: Concat cu protocol concat
ffmpeg -i "concat:part1.mp4|part2.mp4|part3.mp4" -c copy output.mp4
Fix 4: Generare automată listă de fișiere
# Pentru toate fișierele MP4 dintr-un director
for f in *.mp4; do echo "file '$f'" >> list.txt; done
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
Fix 5: Concat cu conversie (formate diferite)
GREȘIT — concat cu formate diferite:
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
# Eroare dacă segmentele au codecuri diferite
CORECT — convertește mai întâi la același format:
# Convertește toate segmentele la același format
for f in segment_*.mp4; do
ffmpeg -i "$f" -c:v libx264 -c:a aac -vf "fps=30,scale=1920:1080" "conv_$f"
done
# Apoi concatenează
for f in conv_*.mp4; do echo "file '$f'" >> list.txt; done
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
Folosește DodaTech Video Joiner pentru a uni segmente video rapid, fără a scrie comenzi manuale.
Prevenție
- Toate segmentele trebuie să aibă același codec, rezoluție și framerate.
- Folosește
-c copypentru concatenare rapidă (fără re-encode). - Folosește
-safe 0pentru căi relative în fișierul listă. - Pentru formate diferite, folosește filter_complex.
Greșeli Comune cu Concat
- Segmente cu specificații diferite — codecuri, rezoluții sau framerate-uri diferite cauzează erori.
- Căi incorecte în list.txt — FFmpeg nu găsește fișierele dacă căile sunt greșite.
- Uitarea lui
-safe 0— FFmpeg blochează căile relative din motive de securitate.
Aceste greșeli apar frecvent în cod FFmpeg real. Contribuitorii DodaTech au identificat aceste patternuri prin analiza proiectelor open-source și a sistemelor de producție.
Exercițiu Practic
Scrie o comandă care generează un fișier list.txt pentru toate fișierele .mp4 dintr-un director, apoi concatenează-le cu ffmpeg folosind concat demuxer și stream copy.
Acest exercițiu întărește conceptele acoperite î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