Skip to content

Cum să concatenezi fișiere cu același codec în FFmpeg

DodaTech Updated 2025-01-15 3 min read

In this tutorial, you'll learn about Cum să concatenezi fișiere cu același codec în FFmpeg. We cover key concepts, practical examples, and best practices.

Problema

Vrei să unești mai multe fișiere video care au același codec, aceeași rezoluție și același format, dar comanda ta eșuează cu Operation not permitted sau Non-monotonous DTS in output. Concatenarea cu același codec necesită parametri identici între fișiere.

Soluția rapidă

Fix 1: Concat Protocol pentru Fișiere Identice

GRESIT — folosind comanda simplistă fără protocol:

ffmpeg -i "concat:file1.mp4|file2.mp4" -c copy output.mp4
# (funcționează doar cu anumite formate)

CORECT — folosește concat protocol cu -c copy:

ffmpeg -i "concat:file1.ts|file2.ts|file3.ts" -c copy output.ts

Concat protocol funcționează doar cu fișiere care au exact aceleași proprietăți (codec, rezoluție, framerate, sample rate audio, număr de streamuri).

Fix 2: Verifică Compatibilitatea Fișierelor

ffprobe -v error -show_entries stream=codec_name,width,height file1.mp4
ffprobe -v error -show_entries stream=codec_name,width,height file2.mp4
# Asigură-te că toate streamurile au aceleași valori

Fix 3: Transcodă Fișierele la Același Format

Dacă fișierele nu sunt identice, transcodă-le mai întâi:

for f in file*.mp4; do
    ffmpeg -i "$f" -c:v libx264 -c:a aac -s 1920x1080 -r 30 \
        -pix_fmt yuv420p "fixed_$f"
done
ffmpeg -f concat -safe 0 -i <(for f in fixed_*.mp4; do echo "file '$PWD/$f'"; done) -c copy output.mp4

Fix 4: Concat pentru MP4 cu același codec

MP4 nu suportă concatenarea directă cu concat protocol. Folosește demuxer-ul concat:

# Creează un fișier listă (vezi articolul despre concat list file)
echo "file 'file1.mp4'" > list.txt
echo "file 'file2.mp4'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

Fix 5: Rezolvă Eroarea Non-Monotonous DTS

ffmpeg -i "concat:file1.ts|file2.ts" -c copy -fflags +genpts output.ts
# -fflags +genpts generează noi timestamp-uri pentru a evita DTS non-monotone

Folosește DodaTech's Video Merger pentru a uni fișiere video cu același codec printr-o interfață grafică.

Prevenție

  • Verifică identitatea codecurilor cu ffprobe înainte de concatenare.
  • Folosește același framerate, rezoluție și pix_fmt pentru toate fișierele.
  • Pentru MP4, folosește demuxer-ul concat, nu protocolul concat.
  • Adaugă -fflags +genpts când întâmpini erori de DTS.
  • Testează pe un segment scurt înainte de concatenarea completă.

Greșeli comune

  1. Concatenarea fișierelor MP4 cu concat protocol — protocolul concat nu funcționează corect cu MP4 din cauza moov atom. Folosește demuxer-ul concat.
  2. Ignorarea diferențelor de pix_fmt — fișiere cu yuv420p și yuv422p nu pot fi concatenate direct.
  3. Lipsa generării DTS — fără -fflags +genpts, timestamp-urile pot fi nemonotone.
  4. Streamuri audio lipsă — unele fișiere pot avea audio, altele nu, ceea ce blochează concatenarea.
  5. Folosirea căilor relative fără -safe 0 — demuxer-ul concat refuză căi relative fără flag-ul de siguranță.

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ă 3 fișiere TS identice și apoi verifică integritatea output-ului cu ffprobe.

Acest exercițiu întărește conceptele prezentate în acest ghid. Încearcă să-l implementezi înainte de a verifica soluțiile online.

FAQ

### Ce format suportă concat protocol?

Concat protocol funcționează cel mai bine cu .ts (MPEG-TS), .mpg, .m2ts. Pentru .mp4, .mkv, .avi, folosește demuxer-ul concat.

De ce primesc "Non-monotonous DTS in output"?

Timestamp-urile DTS (Decoding Time Stamp) nu sunt monotone când fișierele au durate diferite sau GOP-uri nestandard. Adaugă -fflags +genpts pentru a regenera timestamp-urile.

Cum concatenez fișiere cu același codec dar rezoluții diferite?

Transcodă mai întâi toate fișierele la aceeași rezoluție cu -s, apoi concatenează-le. Sau folosește concat filter pentru a gestiona diferențele automat.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro