Skip to content

Cum să adaugi text pe video cu FFmpeg

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să adaugi text pe video cu FFmpeg. We cover key concepts, practical examples, and best practices.

Problema

Comanda ta FFmpeg pentru adăugarea textului pe video eșuează cu Fontconfig error: Cannot find default font sau Failed to open font. Filtrul drawtext necesită specificarea corectă a fontului și a parametrilor de text.

Soluția rapidă

Fix 1: Adăugare Text Simplu

GRESIT — drawtext fără specificarea fontului:

ffmpeg -i input.mp4 -vf "drawtext=text='Hello World':x=10:y=10" output.mp4
# Fontconfig error: Cannot find default font

CORECT — specifică fontul explicit:

ffmpeg -i input.mp4 -vf "drawtext=text='Hello World':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:x=10:y=10" output.mp4

Fix 2: Poziționare Text

# Colțul stânga sus:
ffmpeg -i input.mp4 -vf "drawtext=text='Stânga Sus':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:x=10:y=10" output.mp4

# Centru:
ffmpeg -i input.mp4 -vf "drawtext=text='Centru':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:x=(w-text_w)/2:y=(h-text_h)/2" output.mp4

# Colțul dreapta jos:
ffmpeg -i input.mp4 -vf "drawtext=text='Dreapta Jos':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:x=w-tw-10:y=h-th-10" output.mp4

Fix 3: Stilizare Text (Culoare, Dimensiune, Font)

ffmpeg -i input.mp4 -vf "drawtext=text='Titlu':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:fontsize=48:fontcolor=white:shadowy=2:box=1:boxcolor=black@0.5:boxborderw=10:x=(w-text_w)/2:y=50" output.mp4

Fix 4: Text dinamic (Timestamp)

ffmpeg -i input.mp4 -vf "drawtext=text='%{pts\:hms}':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:x=10:y=10:fontsize=24:fontcolor=yellow" output.mp4
# %{pts:hms} afișează timestamp-ul video în format ore:minute:secunde

Fix 5: Text cu Fundal (Box)

ffmpeg -i input.mp4 -vf "drawtext=text='Subtitrare':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:fontcolor=white:box=1:boxcolor=black:boxborderw=5:x=(w-tw)/2:y=h-th-20" output.mp4

Fix 6: Animație Text (Deplasare)

# Text care se deplasează de la stânga la dreapta:
ffmpeg -i input.mp4 -vf "drawtext=text='Scrolling':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:x=w-mod(t*50\,w+tw):y=100:fontsize=36" output.mp4

Folosește DodaTech's Video Text Overlay pentru a adăuga text pe video cu o interfață vizuală.

Prevenție

  • Verifică fonturile disponibile cu fc-list | grep -i "nume_font".
  • Folosește căi absolute pentru fonturi în scripturi.
  • Testează poziționarea cu un singur frame: -vframes 1.
  • Ajustează fontsize în funcție de rezoluția video.
  • Folosește escape_text pentru text cu caractere speciale.

Greșeli comune

  1. Font ne specificat — drawtext necesită fontfile= pentru a funcționa corect.
  2. Font inexistent — calea către font este greșită sau fontul nu este instalat.
  3. Poziție în afara ecranului — coordonatele x/y plasează textul în afara cadrului vizibil.
  4. Caractere speciale neescapate: și ' în text trebuie escapenate.
  5. Box fără borderwidth — boxul apare prea strâns pe text fără boxborderw.

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

Adaugă un text centrat cu fundal negru semi-transparent și font bold pe un video, cu timestamp-ul în colțul din dreapta sus.

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

FAQ

### Cum instalez fonturi suplimentare pentru drawtext?

Pe Ubuntu/Debian: apt install fonts-dejavu-core fonts-liberation. Pe macOS: fonturile sunt în /Library/Fonts/. Folosește fc-list pentru a lista fonturile disponibile.

Pot adăuga text cu caractere Unicode (românești)?

Da, drawtext suportă Unicode. Asigură-te că fontul ales suportă caracterele respective. Fonturile DejaVu și Liberation suportă diacriticele românești.

Cum centrez textul vertical și orizontal?

Folosește expresiile: x=(w-text_w)/2:y=(h-text_h)/2 pentru centrare perfectă. Pentru offset, adaugă la expresie: x=(w-text_w)/2+50.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro