Het fundamentele verschil
CRF en two-pass encoding lossen hetzelfde probleem op — kwaliteit afwegen tegen bestandsgrootte — maar vanuit tegengestelde richtingen:
- CRF (Constant Rate Factor): "Ik wil dit kwaliteitsniveau. Geef me welke bestandsgrootte dan ook om dat te bereiken." Je beheert de kwaliteit; de bestandsgrootte is de variabele.
- Two-pass: "Ik wil deze bestandsgrootte (doelbitrate). Geef me de beste kwaliteit die past." Je beheert de bestandsgrootte; de kwaliteit is de variabele.
| Kenmerk | CRF | Two-Pass |
|---|---|---|
| Jij beheert | Kwaliteitsniveau (CRF-getal) | Doelbitrate / bestandsgrootte |
| Variabele | Bestandsgrootte | Kwaliteit |
| Passes | 1 (enkele pass) | 2 (analyse + codering) |
| Snelheid | 1x (referentie) | ~2x trager |
| Bestandsgrootte voorspellen | Onvoorspelbaar | Voorspelbaar |
| Kwaliteitsconsistentie | Constante kwaliteit per frame | Optimale bitverdeling |
Hoe CRF werkt
CRF-codering is een single-pass-proces. De encoder verwerkt elk frame en vraagt: "Hoeveel bits heb ik nodig om dit kwaliteitsniveau voor dit specifieke frame te bereiken?"
- Complexe frames (explosies, snelle beweging) ontvangen meer bits
- Eenvoudige frames (statische shots, titelkaarten) ontvangen minder bits
- De kwaliteit blijft constant; de bitrate varieert
Het resultaat is een VBR-bestand waarbij elk frame precies de bits krijgt die het nodig heeft — geen verspilling bij eenvoudige scènes, geen tekort bij complexe. Daarom levert CRF de optimale kwaliteit-grootteverhouding voor offline codering.
Hoe two-pass werkt
Two-pass encoding verwerkt de video twee keer:
- Pass 1 (Analyse): De encoder scant de volledige video zonder uitvoer te produceren. Hij bouwt een frame-voor-frame complexiteitskaart — welke scènes eenvoudig zijn, welke complex, waar scènewisselingen plaatsvinden.
- Pass 2 (Codering): Met de analyse uit pass 1 verdeelt de encoder de doelbitrate optimaal over alle frames. Complexe scènes krijgen meer van het bitrate-budget; eenvoudige scènes krijgen minder.
Het resultaat: een bestand dat de doelbitrate nauwkeurig haalt en de kwaliteit zo gelijkmatig mogelijk over alle scènes verdeelt.
Kwaliteitsvergelijking
Bij verstandige instellingen leveren CRF en two-pass nagenoeg identieke kwaliteit. De verschillen zijn subtiel:
- CRF-voordeel: Elk frame krijgt precies de bits die het nodig heeft. Geen enkel frame komt tekort. CRF levert mogelijk iets betere gemiddelde kwaliteit omdat het niet beperkt wordt door een bitrate-budget.
- Two-pass-voordeel: Betere bitverdeling bij extreme content (lange video's met sterk wisselende complexiteit). De analysepas helpt de encoder zich voor te bereiden op komende complexe scènes.
In de praktijk is het kwaliteitsverschil tussen CRF en een goed ingestelde two-pass encode verwaarloosbaar voor de meeste content. Je hebt frame-voor-frame VMAF-analyse nodig om verschillen te detecteren.
Snelheidsvergelijking
Het snelheidsverschil is eenvoudig:
- CRF: 1x coderingstijd (één pass door de video)
- Two-pass: ~1.7–2x coderingstijd (eerste pass is snel omdat er geen uitvoer wordt geproduceerd, maar kost toch tijd)
Voor een 10 minuten durende 1080p-video op een moderne CPU:
- CRF medium: ~20 seconden
- Two-pass medium: ~35 seconden
Wanneer CRF gebruiken
CRF is de betere keuze voor vrijwel alle gangbare scenario's:
- Bestandsconversie: MKV naar MP4, MOV naar MP4, elke formaatconversie waarbij je de beste kwaliteit wilt
- Persoonlijk archief: Je videobibliotheek opslaan met consistente kwaliteit
- Web-upload: YouTube, sociale media en de meeste platforms accepteren variable bitrate-bestanden
- Delen: Wanneer de bestandsgrootte niet exact hoeft te zijn, geeft CRF optimale kwaliteit
- Batchverwerking: Één instelling (CRF 23) werkt goed voor alle contenttypes
Daarom gebruikt onze converter CRF — het levert de beste kwaliteit zonder dat gebruikers doelbitrates hoeven te berekenen.
Wanneer two-pass gebruiken
Two-pass encoding is de betere keuze wanneer de bestandsgrootte voorspelbaar moet zijn:
- DVD/Blu-ray-authoring: Content moet op een specifieke schijfcapaciteit passen
- Bandbreedte-beperkt streamen: Adaptive bitrate streaming (HLS/DASH) vereist precieze bitrate-doelen voor elk kwaliteitsniveau
- Bestandsgroottebeperkingen: Platforms met strikte uploadlimieten (Discord 25 MB, e-mail 25 MB) waarbij je de uitvoer gegarandeerd wilt laten passen
- Professionele broadcast: Broadcastpijplijnen vereisen vaak CBR of precieze VBR-doelen
Het beste van beide: Capped CRF
Er is een hybride aanpak genaamd capped CRF (beperkte kwaliteit) die de voordelen van beide methoden combineert:
ffmpeg -i input.mkv -c:v libx264 -crf 23 -maxrate 4000k -bufsize 8000k -c:a aac output.mp4
Dit instrueert de encoder: "Streef naar CRF 23-kwaliteit, maar overschrijd nooit 4 Mbps." In de praktijk:
- Eenvoudige scènes: gecodeerd op CRF 23-kwaliteit (ruim onder 4 Mbps)
- Complexe scènes: gecodeerd op CRF 23-kwaliteit, tenzij dat 4 Mbps zou overschrijden; in dat geval wordt de kwaliteit iets verlaagd om binnen de limiet te blijven
Capped CRF is ideaal voor streamingapplicaties waarbij je bandbreedtevoorspelbaarheid nodig hebt zonder de kwaliteit-eerste aanpak van CRF op te offeren.