FFmpeg-commando's met CRF
ffmpeg -i input.mkv -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 192k output.mp4— H.264: bereik 0–51, standaard 23.ffmpeg -i input.mkv -c:v libx265 -crf 28 -preset medium -tag:v hvc1 -c:a aac -b:a 192k output.mp4— H.265: bereik 0–51, standaard 28; methvc1spelen Apple-apparaten het af.ffmpeg -i input.mkv -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm— VP9: bereik 0–63;-b:v 0is vereist voor zuivere constante kwaliteit.ffmpeg -i input.mkv -c:v libx264 -crf 23 -maxrate 4M -bufsize 8M -c:a aac output.mp4— begrensde CRF voor streaming of uploadlimieten.
De methode uit de H.264-gids van FFmpeg: kies de hoogste CRF die er voor jou nog goed uitziet, daarna de langzaamste preset waarvoor je geduld hebt, en gebruik beide voor de hele batch.
Wat is CRF (Constant Rate Factor)?
CRF is de primaire kwaliteitsregeling in moderne video-encoders zoals x264 (H.264) en x265 (H.265). Het is één getal dat de encoder vertelt: "Ik wil dit kwaliteitsniveau — gebruik welke bitrate dan ook om dat te bereiken."
Anders dan bij vaste-bitrate-encoding past CRF de bitrate per frame dynamisch aan op basis van scènecomplexiteit. Actiescènes met veel beweging krijgen meer bits (meer data). Statische praatscènes krijgen minder bits (minder data). Het resultaat is een optimale kwaliteit-grootteverhouding zonder handmatige bitrate-afstelling.
Hoe CRF werkt
De encoder verwerkt elk frame en vraagt: "Hoeveel bits heb ik nodig om CRF X-kwaliteit te bereiken voor dit specifieke frame?" Het antwoord varieert sterk:
- Een frame met snelle actie en explosies kan 500 KB nodig hebben
- Een frame met een statische titelkaart kan 5 KB nodig hebben
- Een frame met pratende mensen en een onscherpe achtergrond kan 50 KB nodig hebben
CRF produceert variabele bitrate (VBR)-uitvoer — de bitrate schommelt door de video heen. Dit is fundamenteel efficiënter dan constante bitrate (CBR), die bits verspilt op eenvoudige scènes en complexe scènes tekortdoet.
CRF-schaal voor H.264 / H.265
Voor H.264 (libx264) loopt CRF van 0 tot 51. Lagere waarden betekenen hogere kwaliteit en grotere bestanden:
| CRF-waarde | Kwaliteitsniveau | Typisch gebruik | Bestandsgrootte (1 min 1080p) |
|---|---|---|---|
| 0 | Lossless (wiskundig perfect) | Tussentijdse bewerking, archiefmasters | ~2–5 GB |
| 18 | Visueel transparant | Hoge kwaliteitsarchivering, bronbehoud | ~120 MB |
| 23 | Uitstekend (standaard) | Algemeen gebruik, web, delen | ~60 MB |
| 28 | Goed (enig zichtbaar verlies) | Kleinere bestanden, mobiel, e-mail | ~30 MB |
| 33 | Aanvaardbaar (merkbare artefacten) | Previews, thumbnails, lage prioriteit | ~15 MB |
| 40+ | Slecht (zware compressie) | Niet aanbevolen | <10 MB |
Voor H.265 (libx265) is de schaal hetzelfde (0–51), maar gelijkwaardige kwaliteit vereist hogere CRF-waarden. H.264 CRF 23 is ongeveer gelijk aan H.265 CRF 28.
Vuistregel: elke 6 CRF-stappen verdubbelen of halveren de bestandsgrootte ruwweg. Van CRF 23 naar CRF 17 verdubbelt het bestand ongeveer, terwijl van CRF 23 naar CRF 29 het bestand ongeveer halveert.
CRF-schaal voor VP9
VP9 (libvpx-vp9) gebruikt een ander CRF-bereik: 0 tot 63. Het principe is hetzelfde (lager = beter), maar de getallen zijn niet direct vergelijkbaar met H.264:
- CRF 15–20: Hoge kwaliteit, grote bestanden
- CRF 30: Goede kwaliteit, onze standaard (ruwweg gelijkwaardig aan H.264 CRF 23)
- CRF 35–45: Kleinere bestanden, enig kwaliteitsverlies
VP9 op CRF 30 produceert doorgaans bestanden die 30–50% kleiner zijn dan H.264 op CRF 23 bij gelijkwaardige visuele kwaliteit. Dit komt doordat VP9 een efficiëntere codec is, niet door het CRF-getal.
CRF vs CBR vs VBR
Drie hoofdbenaderingen voor het beheren van de videobitrate:
| Methode | Hoe het werkt | Het beste voor | Nadeel |
|---|---|---|---|
| CRF | Constante kwaliteit, variabele bitrate | Bestandsconversie, archivering, algemeen gebruik | Onvoorspelbare bestandsgrootte |
| CBR | Constante bitrate, variabele kwaliteit | Live streaming, strikte bandbreedte | Verspilt bits op eenvoudige scènes |
| VBR | Doelbitrate, variatie daaromheen | 2-pass encoding, voorspelbare bestandsgrootte | Vereist schatting van doelbitrate |
Voor bestandsconversie (MKV naar MP4, MOV naar MP4, etc.) is CRF altijd de beste keuze. Het levert de optimale kwaliteit-grootteverhouding zonder dat je een doelbitrate hoeft te raden. Moet een bestand juist een exacte grootte halen, lees dan onze vergelijking van two-pass-encoding vs CRF.
Praktische bestandsgrootte-voorbeelden
Dezelfde 1 minuut durende 1080p-video bij verschillende CRF-waarden (H.264, medium preset):
- CRF 18: ~120 MB — visueel perfect, 2x de standaardgrootte
- CRF 20: ~85 MB — uitstekende kwaliteit, iets boven standaard
- CRF 23: ~60 MB — onze standaard, onmerkbaar kwaliteitsverlies
- CRF 26: ~40 MB — nog steeds zeer goed, alleen merkbaar bij veeleisende scènes
- CRF 28: ~30 MB — goede kwaliteit, zichtbaar verlies bij kleurverlopen en fijne details
- CRF 33: ~15 MB — aanvaardbaar, artefacten zichtbaar bij beweging
Deze cijfers variëren sterk op basis van de inhoudscomplexiteit. Actiefilms produceren grotere bestanden dan screencasts bij elk CRF-niveau.
Onze converterinstellingen
Onze converter gebruikt deze kwaliteitsinstellingen:
- MP4-uitvoer: H.264, CRF 23, medium preset, AAC 192k audio
- WebM-uitvoer: VP9, CRF 30, cpu-used 3, Opus 128k audio
CRF 23 is gekozen omdat het de optimale balans biedt: een klein verlies dat bij de meeste inhoud nauwelijks zichtbaar is, met redelijke bestandsgroottes die geschikt zijn voor delen, uploaden en streamen.
Onder CRF 18: Je slaat bits op die geen menselijk oog kan waarnemen. De bestandsgrootte groeit exponentieel terwijl de visuele kwaliteit vlak blijft. CRF 0 (lossless) is 10–50x groter dan CRF 23 — voorbehouden aan professionele bewerkmasters, nooit voor distributie.
Wat CRF doet met een video die al gecomprimeerd is
CRF meet de kwaliteit ten opzichte van de invoer die je aanlevert, niet ten opzichte van het oorspronkelijke camerabeeld. Een zacht, blokkerig bestand opnieuw coderen op CRF 18 behoudt die blokjes getrouw en kan zelfs een groter bestand opleveren dan de bron. Een lagere CRF brengt geen detail terug dat eerdere compressie heeft verwijderd.
- Kies de CRF die je nodig hebt, niet een lagere “voor de zekerheid”.
- Is de video prima en klopt alleen de container niet, remux dan met
-c copyin plaats van opnieuw te coderen. - Elke hercodering voegt wat verlies toe, dus begin altijd met de beste kopie die je hebt.