Onderwijs

Ondertitels toevoegen met FFmpeg (handleiding voor de opdrachtregel)

door David Nguyen 12 min gelezen
In dit artikel

Het toevoegen van ondertitels aan video zou geen diploma in informatica moeten vereisen – maar zo voelt het vaak wel als je voor het eerst naar een commandoregelterminal staart. FFmpeg, de gratis, open-source tool voor videoverwerking, biedt krachtige ondertitelingsmogelijkheden zonder licentiekosten. Of je nu ondertitels rechtstreeks in je beeldmateriaal wilt branden of in- en uitschakelbare ondertitelingssporen wilt insluiten, FFmpeg kan beide met een paar goed opgestelde commando’s. Voor wie de opdrachtregel liever helemaal overslaat, automatisch gegenereerde ondertitels Met de juiste tools kun je een handmatige workflow met slechts een paar muisklikken automatiseren, maar als je FFmpeg goed begrijpt, heb je volledige controle over het insluiten en weergeven van ondertitels.

Belangrijkste opmerkingen

  • FFmpeg ondersteunt twee soorten ondertitels: ‘soft subtitles’, dit zijn sporen die je kunt in- en uitschakelen, en ‘hard subtitles’, die permanent in de video zijn ingebrand
  • SRT-bestanden maken gebruik van een eenvoudige opmaak voor tijdstempels, terwijl ASS/SSA-bestanden geavanceerde opmaakmogelijkheden bieden met lettertypen, kleuren, positionering en effecten
  • Voor het verwerken van hard-subtitels moet de video opnieuw worden gecodeerd, wat langzamer gaat en meer rekenkracht van de CPU vergt
  • Soft-ondertitels kunnen vaak worden toegevoegd tijdens het kopiëren van de originele video- en audiostreams, waardoor hercodering van de video wordt vermeden
  • In FFmpeg 8.0 is een optioneel Whisper-audiofilter voor automatische transcriptie geïntroduceerd, maar de beschikbaarheid van avai hangt af van de manier waarop het FFmpeg-binaire bestand is gecompileerd en vereist een compatibel model
  • SRT biedt brede compatibiliteit met verschillende ondertitelingstools, afspeelprogramma’s en platforms
  • ASS/SSA-bestanden bieden uitgebreide mogelijkheden voor het aanpassen van de weergave, waaronder geanimeerde teksteffecten en markeringen in karaokestijl
  • Met ‘soft subtitles’ blijft de oorspronkelijke videokwaliteit behouden wanneer de videostream wordt gekopieerd zonder hercodering

Inzicht in ondertitelformaten: SRT, VTT en ASS/SSA

Voordat je je verdiept in de FFmpeg-opdrachten, moet je eerst begrijpen waarmee je te maken hebt. Ondertitelingsbestanden zijn er in verschillende formaten, die elk een ander doel dienen en verschillende mate van controle bieden.

Wat is een SRT-bestand?

SRT, oftewel SubRip Text, is dankzij zijn eenvoud een van de meest gebruikte ondertitelformaten. De structuur volgt een straightforward-patroon:

1

00:00:01,000 –> 00:00:03,500

Dit is de eerste ondertitel.

2

00:00:03,500 –> 00:00:06,000

Dit is de tweede ondertitel.

Elk item bevat een volgnummer, een tijdsbereik en de weergegeven tekst. Je kunt SRT-bestanden in elke willekeurige teksteditor aanmaken en bewerken – Notepad, TextEdit of VS Code zijn allemaal geschikt. Het formaat ondersteunt eenvoudige regeleinden, maar biedt beperkte mogelijkheden voor inbouwstijlen.

Het formaat dat je kiest, bepaalt wat er met je ondertitels mogelijk is:

  • SRT (SubRip): Plain-tekst met tijdstempels, brede compatibiliteit en beperkte opmaakmogelijkheden
  • VTT (WebVTT): Een op het web gericht formaat met cue-instellingen en basisopmaak, dat vaak wordt gebruikt bij HTML5-videospelers
  • ASS/SSA (Advanced SubStation Alpha): Uitgebreide mogelijkheden voor het aanpassen van de vormgeving, waaronder lettertypen, kleuren, plaatsing, schaduwen en animaties

Voor content op sociale media waarvoor bijschriften met uw merknaam nodig zijn, bieden ASS-bestanden de flexibiliteit om deze af te stemmen op uw visuele identiteit. Voor toegankelijkheidsworkflows en brede compatibiliteit is SRT vaak een praktische keuze.

FFmpeg instellen: installatie en basisgebruik

FFmpeg wordt vanaf de opdrachtregel uitgevoerd, wat betekent dat je opdrachten invoert in Terminal op macOS of Linux, of in de Opdrachtprompt of PowerShell op Windows. De installatie verschilt per besturingssysteem:

Windows: Bezoek de FFmpeg-downloadpagina en volg een van de links naar een compatibele Windows-build. Pak de bestanden uit en voeg vervolgens de bak map aan je PATH-omgevingsvariabele toevoegen.

Mac: Open Terminal en voer het volgende uit brew install ffmpeg als je de Homebrew-pakketbeheerder gebruikt.

Linux: Uitvoeren sudo apt install ffmpeg op Ubuntu of Debian, of sudo pacman -S ffmpeg op Arch-gebaseerde distributies.

Controleer of de installatie is gelukt door het volgende in te voeren:

ffmpeg -version

Bij een succesvolle installatie worden informatie over de versie en de build-configuratie weergegeven. Controleer voor ingebrande ondertitels of de configuratie het volgende bevat: –enable-libass, of voer het volgende uit ffmpeg -filters en bevestigen dat de ondertitels het filter wordt weergegeven.

Basisstructuur van FFmpeg-opdrachten

Elke FFmpeg-opdracht volgt een vast patroon:

ffmpeg -i input.mp4 [opties] output.mp4

De -i Met `flag` geef je je invoerbestand aan, met `options` pas je de verwerking aan en met het laatste argument geef je je uitvoerbestand een naam. Als je deze structuur begrijpt, worden zelfs complexe opdrachten makkelijker te lezen.

Soft-ondertitels: externe ondertitelingssporen aan video toevoegen

Soft-ondertitels worden als afzonderlijke sporen in een videobestand opgeslagen, waardoor kijkers ze kunnen in- of uitschakelen. Op deze manier blijft de oorspronkelijke videokwaliteit behouden, omdat de videostream niet opnieuw hoeft te worden gecodeerd.

SRT-bestanden integreren zonder de video opnieuw te coderen

Een standaardcommando voor soft-ondertiteling bij MP4 is:

ffmpeg -i video.mp4 -i subtitles.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4

Dit eens nader bekeken:

  • -i video.mp4: Je bronvideo
  • -i ondertitels.srt: Je ondertitelingsbestand
  • -c kopiëren: Compatibele invoerstromen kopiëren zonder ze opnieuw te coderen
  • -c:s mov_text: Zet de ondertitelingsspoor om naar een formaat dat compatibel is met MP4 mov_text formaat
  • -metadata:s:s:0 language=eng: Geef de eerste ondertitelingsspoor de tag ‘Engels’

De verwerking verloopt doorgaans veel sneller dan het renderen van hard-ondertitels, omdat FFmpeg de video- en audiostreams kan kopiëren terwijl alleen de ondertitelstream wordt geconverteerd. Voor teams die ondertitelbestanden moeten aanmaken voordat ze deze kunnen insluiten, Sonix kan automatisch SRT-bestanden genereren op basis van audio- of videobestanden.

Omgaan met meerdere ondertitelingstalen

Voor inhoud waarvoor meerdere taalopties nodig zijn:

ffmpeg -i video.mp4 -i english.srt -i spanish.srt -map 0 -map 1 -map 2 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=spa output.mp4

Hierdoor ontstaat één videobestand met selecteerbare ondertitelingssporen in het Engels en het Spaans. De -kaart De opties omvatten expliciet de streams van elke invoer.

Ondertitels hardcoderen: ondertitels rechtstreeks in de video branden

Vaste ondertitels worden een vast onderdeel van de videoframes en worden altijd weergegeven, ongeacht de instellingen van de speler. Dit kan ervoor zorgen dat ondertitels zichtbaar blijven in weergaveomgevingen waarin afzonderlijke ondertitelingssporen niet altijd betrouwbaar worden weergegeven.

Het ondertitelingsfilter gebruiken voor permanente ondertitels

Het standaardcommando voor het inbranden is:

ffmpeg -i video.mp4 -vf “subtitles=subtitles.srt” -c:v libx264 -c:a copy output.mp4

De -vf De optie ‘video-filter’ past het ondertitelingsfilter toe, waardoor tekst rechtstreeks op de videoframes wordt weergegeven. Aangezien het filter op gedecodeerde frames wordt toegepast, moet de video opnieuw worden gecodeerd. De -c: een kopie Deze optie behoudt de oorspronkelijke audiostream wanneer deze compatibel is met het uitvoerformaat.

Het uiterlijk van ondertitels aanpassen

Witte tekst in Plain past niet altijd bij de esthetiek van professionele video’s. FFmpeg’s force_style Met deze optie kun je de opmaakkenmerken van ASS overschrijven:

ffmpeg -i video.mp4 -vf “subtitles=subtitles.srt:force_style=’FontName=Roboto,FontSize=18,BackColour=&H40000000,BorderStyle=3′” -c:v libx264 -c:a copy output.mp4

Hiermee worden bijschriften met een gedeeltelijk transparante achtergrond gemaakt. De beschikbare opmaakopties zijn onder meer:

  • Lettertypenaam: Een naam van een AVailable-lettertype
  • Lettergrootte: Een ASS-waarde voor de lettergrootte; de weergegeven grootte is afhankelijk van de schaal van de ondertitels en de video
  • PrimaryColour: Tekstkleur in ASS &HAABBGGRR notatie
  • Achtergrondkleur: Achtergrond- of schaduwkleur, inclusief transparantie
  • BorderStyle: Meestal 1 voor een overzicht of 3 voor een achtergrond met kader
  • Overzicht: Lijnbreedte in ASS-scripteenheden
  • Schaduw: Schaduwdiepte in ASS-scripteenheden

De beschikbaarheid van het lettertype avai hangt af van het systeem en de FFmpeg-build. Voor draagbare workflows moet u mogelijk een lettertypemap opgeven via het filter’s fontsdir optie.

Veelvoorkomende problemen en oplossingen

Er zijn een aantal problemen waar beginners met FFmpeg vaak tegenaan lopen:

“Dergelijk filter bestaat niet: ondertitels”: Mogelijk biedt jouw FFmpeg-build geen ondersteuning voor libass. Controleer ffmpeg -filters, installeer een build waarin het filter is opgenomen, of compileer FFmpeg met –enable-libass.

Onleesbare tekens: Het ondertitelingsbestand gebruikt mogelijk de verkeerde tekencodering. Sla het opnieuw op als UTF-8. Als je met een andere codering werkt, gebruik dan de optie van het ondertitelingsfilter charenc optie, indien ondersteund.

Ondertitels lopen niet synchroon: Gebruik -itsoffset vóór de invoer van de ondertitels om de gehele ondertitelstroom te verschuiven. Positieve waarden zorgen ervoor dat de ondertitels worden vertraagd; negatieve waarden zorgen ervoor dat ze worden versneld.

Enorme bestandsgrootte van het uitvoerbestand: Vaste ondertitels zorgen ervoor dat de video opnieuw moet worden gecodeerd. Voor H.264-uitvoer kun je de kwaliteit en bestandsgrootte regelen met een encoder die CRF ondersteunt, zoals -c:v libx264 -crf 23. Lagere CRF-waarden leiden over het algemeen tot bestanden van hogere kwaliteit en grotere bestanden.

Voorbeelden van specifieke FFmpeg-opdrachten voor veelvoorkomende scenario’s

SRT toevoegen aan een MP4-video (soft)

ffmpeg -i interview.mp4 -i captions.srt -c copy -c:s mov_text output.mp4

Gebruik dit voor spelers en distributieworkflows die selecteerbare ondertitelingssporen in MP4-bestanden ondersteunen. Voor platforms die een speciale interface voor het uploaden van ondertitels bieden, kan het apart uploaden van het SRT-bestand betrouwbaarder zijn.

VTT-bestanden omzetten naar MKV-video (moeilijk)

ffmpeg -i webinar.mkv -vf “subtitles=captions.vtt” -c:v libx264 -c:a copy output.mkv

De -c: een kopie Deze optie behoudt de originele audio zonder deze opnieuw te coderen, mits de codec compatibel is met het uitvoerformaat.

Stijlvolle bijschriften voor sociale media

ffmpeg -i clip.mp4 -vf “subtitles=captions.srt:force_style=’FontName=Arial,FontSize=24,PrimaryColour=&H00FFFFFF,BackColour=&H80000000,BorderStyle=3,Alignment=2′” -c:v libx264 -preset veryfast -c:a copy output.mp4

Uitlijning=2 plaatst ondertitels onderaan in het midden volgens de standaard ASS-uitlijningsregels. De -voorinstelling veryfast de optie versnelt libx264 codering ten koste van enige compressie-efficiëntie.

Geavanceerde FFmpeg-technieken voor ondertitels

De timing van ondertitels aanpassen

Wanneer ondertitels niet helemaal synchroon lopen met de audio:

ffmpeg -i video.mp4 -itsoffset 2.5 -i subtitles.srt -c copy -c:s mov_text output.mp4

Hierdoor wordt de ondertitelstroom met 2,5 seconden vertraagd. Om de ondertitelstroom te versnellen, gebruik je een negatieve waarde, zoals -itsoffset -1,5.

ASS inzetten voor geavanceerde visuele effecten

ASS-bestanden bieden mogelijkheden die plain SRT-bestanden van nature niet bieden:

  • Geanimeerde teksteffecten, zoals overgangen en bewegingen
  • Markeren in karaokestijl
  • Meerdere gelijktijdige tekstposities
  • Opmaak per teken of per woord

Maak ASS-bestanden aan met behulp van een programma voor het maken van ondertitels en pas ze vervolgens toe met het ASS-filter van FFmpeg:

ffmpeg -i video.mp4 -vf “ass=styled_captions.ass” -c:v libx264 -c:a copy output.mp4

Ondertitels genereren met het Whisper-filter van FFmpeg

In FFmpeg 8.0 is een optioneel Whisper-audiofilter geïntroduceerd waarmee transcripties kunnen worden gegenereerd, waaronder ondertitelingsbestanden. Niet elk FFmpeg 8.x-programma bevat dit filter echter.

Controleer eerst of je build het filter bevat:

ffmpeg -filters | grep whisper

In Windows PowerShell kun je het volgende gebruiken:

ffmpeg -filters | Select-String whisper

Je hebt ook een compatibel Whisper-modelbestand nodig. Een voorbeeld van een opdrachtstructuur is:

ffmpeg -i input.mp4 -af “whisper=model=/pad/naar/model.bin:language=auto:destination=output.srt:format=srt” -f null –

De exacte opties kunnen per FFmpeg-versie en -build verschillen. Compatibele builds kunnen gebruikmaken van ondersteunde GPU-backends, maar de versnelling hangt af van de gekoppelde Whisper-bibliotheek, available-hardware, stuurprogramma’s en de buildconfiguratie.

Het filter kan een eerste ondertiteling genereren, maar de nauwkeurigheid hangt af van het model, de taal, accenten, de opnamekwaliteit, achtergrondgeluiden en de woordenschat. Controleer automatisch gegenereerde ondertitels altijd voordat je ze publiceert.

FFmpeg en videobewerkingssoftware: de kloof overbruggen

FFmpeg blinkt uit in batchverwerking en automatisering, terwijl gespecialiseerde bewerkingsprogramma’s visuele precisie bieden. De ideale combinatie bestaat vaak uit beide tools.

Wanneer gebruik je FFmpeg en wanneer een speciaal videobewerkingsprogramma?

Kies FFmpeg wanneer:

  • Het verwerken van tientallen of honderden video’s
  • Geautomatiseerde batchtaken uitvoeren
  • Ondertitels toevoegen via herhaalbare scripts
  • Werken in CI/CD-pijplijnen of serveromgevingen

Kies videobewerkingssoftware wanneer:

  • De timing van afzonderlijke ondertitels visueel nauwkeurig afstemmen
  • Complexe geanimeerde bijschriften maken
  • Werken aan producties waarbij de plaatsing per beeld moet worden bepaald
  • Een visueel realtime voorbeeld nodig tijdens het aanpassen van ondertitels

FFmpeg-gegenereerde ondertitels exporteren voor NLE’s

FFmpeg kan een compatibele ingebedde tekstondertitelingsstream extraheren of converteren:

ffmpeg -i video.mp4 -map 0:s:0 subtitles.srt

Hiermee wordt de eerste ondertitelingsstream geselecteerd en naar SRT geconverteerd wanneer het type bronondertiteling als tekst kan worden weergegeven. Op afbeeldingen gebaseerde ondertitelingssporen kunnen niet rechtstreeks naar SRT worden geconverteerd zonder tekstherkenning. Het resulterende bestand kan in een ander ondertitelingsprogramma worden bewerkt of worden opgenomen in een groter videoworkflow.

Het stroomlijnen van ondertitelingsworkflows met Sonix

Opdrachtregelprogramma’s bieden kracht en flexibiliteit, maar vereisen technische vaardigheden die niet iedereen bezit of wil ontwikkelen. Wanneer deadlines naderen en nauwkeurigheid van belang is, kunnen handmatige transcriptie, het timen van ondertitels en bestandsbeheer knelpunten vormen.

Sonix pakt de ondertitelingsworkflow anders aan door gebruik te maken van AI en browsergebaseerde tools voor de stappen die plaatsvinden vóór de definitieve codering:

  • Automatische transcriptie zet audio en video om in bewerkbare tekst met tijdstempels
  • Ondersteuning voor meerdere talen biedt transcriptie in 54+ talen
  • Bewerken via de browser combineert gesynchroniseerd afspelen met bedieningselementen voor tekst en ondertitelingstijd
  • Ondertiteling exporteren omvat SRT, VTT, TTML, FCPXML en andere ondersteunde productieformaten
  • Identificatie spreker kent automatisch labels toe aan verschillende sprekers in ondersteunde transcriptiewerkprocessen

Sonix geeft officieel aan dat het genereren van ondertitels doorgaans ongeveer vijf minuten per uur video in beslag neemt, hoewel de daadwerkelijke verwerkingstijd kan variëren. De ondertitelingstools van Sonix bieden ook ondersteuning voor het aanpassen van de timing, het aanpassen van de opmaak en het genereren van ingebrande ondertitels.

Voor teams die regelmatig grote hoeveelheden content verwerken, biedt Sonix’s samenwerkingsfuncties biedt gedeelde mappen, rechten voor bekijken en bewerken, notities op alinea-niveau, versiegeschiedenis en gestructureerde overdrachten. Sonix maakt gebruik van een gericht bewerkingsmodel waarbij één persoon de tekst bewerkt, terwijl anderen deze kunnen bekijken, beluisteren, doorzoeken en notities kunnen achterlaten.

Sonix is ook SOC 2 Type II gecertificeerd, waarbij gegevens tijdens de overdracht worden versleuteld met TLS en in opslag met AES-256. Organisaties die met gereguleerd materiaal werken, dienen nog steeds de specifieke product-, plan-, configuratie- en contractuele vereisten te beoordelen die van toepassing zijn op hun gebruikssituatie.

FFmpeg remains is uitstekend geschikt voor de laatste fasen: inbedding, conversie en weergave. Voor de eerdere fasen – transcriptie, beoordeling, vertaling en samenwerking – kan een browsergebaseerd platform de hoeveelheid handmatige bestandsvoorbereiding verminderen.

Eindoordeel: kiezen tussen FFmpeg en professionele transcriptieplatforms

De keuze tussen FFmpeg en een speciaal transcriptieplatform hangt af van de eisen die aan uw workflow worden gesteld en van uw technische vaardigheden.

Kies FFmpeg als je het volgende nodig hebt:

  • Detai-gestuurde regeling van de coderings- en weergaveparameters voor ondertitels
  • Batchverwerking voor geautomatiseerde videopijplijnen
  • Integratie met bestaande command-line-workflows
  • Een open-source-tool zonder terugkerende abonnementskosten voor software
  • Programmeerbare en herhaalbare stappen voor mediaverwerking

Kies een professioneel transcriptieplatform wanneer u het volgende nodig hebt:

  • Automatische omzetting van spraak naar tekst zonder dat het transcript handmatig hoeft te worden opgesteld
  • Bewerken via de browser met gesynchroniseerde weergave
  • Meertalige transcriptie en vertaling
  • Samenwerking binnen teams en beoordelingsprocessen
  • Identificatie en etikettering van luidsprekers
  • Gedocumenteerde beveiligings- en beheerfuncties

Voor veel contentteams bestaat een praktische workflow uit een combinatie van beide: gebruik Sonix om transcripties met tijdstempels, sprekerslabels en samenwerkingsfuncties te genereren en te controleren, en vervolgens FFmpeg te gebruiken om de ondertitels in de definitieve videobestanden in te sluiten of erin te branden. Deze aanpak combineert een ondersteunde transcriptieworkflow met technische controle over het eindresultaat.

Veelgestelde vragen

Wat is het verschil tussen zachte en harde ondertitels?

Soft-ondertitels worden opgeslagen als afzonderlijke sporen die kijkers via de instellingen van een compatibele mediaspeler kunnen in- of uitschakelen. Hard-ondertitels worden permanent in de videoframes verwerkt en worden altijd weergegeven, ongeacht of het apparaat ondertitelingssporen ondersteunt. Bij het toevoegen van soft-ondertitels blijft de oorspronkelijke videostream behouden zonder dat er opnieuw gecodeerd hoeft te worden, terwijl voor hard-ondertitels de video opnieuw moet worden gecodeerd.

Kan FFmpeg automatisch ondertitels genereren op basis van audio?

FFmpeg 8.0 introduceerde een optioneel Whisper-audiofilter voor spraak-naar-tekst-transcriptie, maar deze functie is alleen beschikbaar in binaire bestanden die zijn gecompileerd met ondersteuning voor Whisper en vereist een compatibel modelbestand. Sommige builds kunnen gebruikmaken van ondersteunde GPU-backends, hoewel hardwareversnelling niet wordt gegarandeerd. De nauwkeurigheid varieert afhankelijk van het geselecteerde model, de taal, de audiokwaliteit, accenten, ruis en woordenschat, en de standaardfilteruitvoer biedt niet dezelfde workflow voor sprekersidentificatie als die van speciale transcriptieplatforms.

Hoe kan ik met FFmpeg het lettertype of de kleur van ingebrande ondertitels wijzigen?

Gebruik de force_style optie binnen het ondertitelingsfilter. Bijvoorbeeld:, -vf “subtitles=captions.srt:force_style=’FontName=Arial,FontSize=20,PrimaryColour=&H0000FFFF'” past Arial-tekst toe met een ASS-kleurwaarde. ASS-kleuren maken gebruik van &HAABBGGRR notatie, waarbij AA staat voor alpha. Je kunt ook het volgende opgeven: Achtergrondkleur, BorderStyle, Overzicht, Schaduw, en uitlijningskenmerken.

Welke ondertitelformaten ondersteunt FFmpeg?

FFmpeg kan vele ondertitelformaten lezen, schrijven, converteren of verwerken, waaronder SRT, WebVTT, ASS/SSA en diverse op afbeeldingen gebaseerde ondertitelformaten. De exacte ondersteuning hangt af van de FFmpeg-build, het invoerformaat, het uitvoerformaat en de geselecteerde ondertitelcodec. Voor soft-ondertitels in MP4, -c:s mov_text wordt vaak gebruikt. Matroska-containers kunnen tekstcodecs zoals SRT en ASS directer opslaan, terwijl bij workflows met hard-subtitles doorgaans gebruik wordt gemaakt van de ondertitels of kont filters voor ondersteunde tekstformaten.

Hoe zorg ik ervoor dat mijn ondertitels perfect synchroon lopen met mijn video?

Bekijk korte fragmenten voordat je de hele video verwerkt. Als de volledige ondertitelingsspoor consequent te vroeg of te laat verschijnt, plaats dan -itsoffset vóór de ondertiteling: positieve waarden vertragen de track, terwijl negatieve waarden deze versnellen. Bij problemen die alleen betrekking hebben op afzonderlijke regels, kun je de tijdcodes in het ondertitelingsbestand bewerken of een visuele ondertitelingseditor gebruiken met golfvormweergave en afspeelknoppen.

Krijg nauwkeurige transcriptie in enkele minuten

Begin met slimmer transcriberen. Probeer Sonix gratis uit of bekijk onze prijzen om het juiste plan voor jou te vinden.