Skip to content

Cum să concatenezi folosind un fișier listă în FFmpeg

DodaTech Updated 2025-01-15 3 min read

In this tutorial, you'll learn about Cum să concatenezi folosind un fișier listă în FFmpeg. We cover key concepts, practical examples, and best practices.

Problema

Ai zeci sau sute de fișiere video de concatenat și tastarea lor manuală în linia de comandă este imposibilă. Comanda ta cu fișier listă eșuează cu Unsafe file name sau No such file or directory.

Soluția rapidă

Fix 1: Formatul Corect al Fișierului Listă

GRESIT — fișier listă cu format greșit:

echo "file1.mp4" > list.txt
echo "file2.mp4" >> list.txt
ffmpeg -f concat -i list.txt -c copy output.mp4
# Unsafe file name — FFmpeg respinge căile relative

CORECT — folosește -safe 0 pentru căi relative:

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 2: Format Corect cu Căi Absolute

echo "file '/home/user/videos/file1.mp4'" > list.txt
echo "file '/home/user/videos/file2.mp4'" >> list.txt
ffmpeg -f concat -i list.txt -c copy output.mp4
# Căile absolute nu necesită -safe 0

Fix 3: Generare Automată a Fișierului Listă

# Toate fișierele .mp4 din director:
for f in *.mp4; do echo "file '$PWD/$f'" >> list.txt; done
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

# Sau cu find:
find /path/to/videos -name "*.mp4" -printf "file '%p'\n" | sort > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

Fix 4: Fișiere cu Aceleași Codecuri — Concatenare Rapidă

# Creează list.txt:
# file 'clip1.ts'
# file 'clip2.ts'
# file 'clip3.ts'

ffmpeg -f concat -safe 0 -i list.txt -c copy output.ts
# -c copy păstrează codecurile originale

Fix 5: Fișiere cu Codecuri Diferite — Transcodare

ffmpeg -f concat -safe 0 -i list.txt -c:v libx264 -c:a aac output.mp4
# Transcodă toate fișierele pentru a se potrivi

Fix 6: Fișiere cu Spații în Nume

# În list.txt, numele cu spații trebuie între ghilimele:
# file '/home/user/videos/my video.mp4'

echo "file '/home/user/videos/my video.mp4'" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

Folosește DodaTech's Batch Video Merger pentru a genera fișiere listă și concatena sute de clipuri automat.

Prevenție

  • Folosește -safe 0 când folosești căi relative în listă.
  • Pune căile între ghilimele simple în fișierul listă.
  • Verifică formatul list.txt cu cat list.txt înainte de execuție.
  • Asigură-te că fișierele listate există cu while IFS= read -r line; do ls "${line#file \'}"; done < list.txt.
  • Pentru MP4 cu codecuri identice, folosește demuxer-ul concat (nu protocolul).

Greșeli comune

  1. Lipsa prefixului "file '" — fiecare linie trebuie să înceapă cu file ' și să se termine cu '.
  2. Căi relative fără -safe 0 — FFmpeg blochează căile relative din motive de securitate.
  3. Spații negestionate — căile cu spații trebuie între ghilimele simple.
  4. Extensii de fișiere greșite — fișierele .ts se concatenează bine, .mp4 pot da erori.
  5. Fișiere lipsă în listă — FFmpeg nu verifică existența fișierelor înainte de execuție.

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 un script bash care generează un fișier listă pentru toate fișierele .mp4 dintr-un director (ordonat alfabetic) și le concatenează cu demuxer-ul concat.

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

FAQ

### Care este diferența dintre concat demuxer și concat protocol?

Demuxer-ul concat (-f concat -i list.txt) citește fișierele dintr-o listă și le concatenează. Protocolul concat (-i "concat:file1|file2") funcționează doar cu fișiere identice și formate suportate (MPEG-TS).

De ce primesc "Unsafe file name"?

FFmpeg blochează căile relative din motive de securitate. Adaugă -safe 0 pentru a permite căi relative sau folosește căi absolute.

Pot folosi wildcards în fișierul listă?

Nu, fișierul listă nu suportă wildcards. Trebuie să listezi explicit fiecare fișier. Folosește un script bash pentru a genera lista automat.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro