Wat is het probleem met Handbrake?
Wanneer u Handbrake gebruikt om van het ene containerformaat naar het andere te converteren (in uw geval dus MKV naar MP4), zal Handbrake de video opnieuw encoderen. Zie ook de respectieve feature request die video passthrough mogelijk zou hebben gemaakt:
Sorry, het toevoegen van video passthrough is niet gepland. HandBrake is ontworpen om een video transcoder te zijn. Het is niet ontworpen om passthrough toe te staan.
Dus, elke keer als je van container wisselt met Handbrake, wordt je video opnieuw geëncodeerd, wat betekent dat het a) tijd kost en b) kwaliteitsverlies kan veroorzaken.
Moet ik opnieuw encoderen? Kan ik niet gewoon de container omwisselen?
Aangezien passthrough niet mogelijk is, vraag jezelf af: Moet ik opnieuw encoderen? *Als u alleen de container van MKV naar MP4 wilt veranderen, *hoeft u meestal niets te encoderen , u verandert alleen de “wikkel” om de video. Dit verliest geen kwaliteit, en het zal een veel sneller proces zijn.
Je kunt containers gemakkelijk verwisselen met FFmpeg - je hoeft het alleen maar te vertellen dat het de video en audio streams moet kopiëren:
ffmpeg -i input.mkv -c copy -map 0 output.mp4
Er zijn ook tools zoals MP4Box die ook MP4 containers kunnen maken - hetzelfde bestaat voor MKV met MKVtoolnix .
Er is echter een groot voorbehoud: dit werkt alleen als de audio en video codecs worden ondersteund in de doel (MP4) container, wat het geval is voor H.264/H.265 en AAC, bijvoorbeeld, maar niet voor vele anderen. Ook is de ondersteuning van het ondertitelformaat voor MP4 anders dan voor MKV, en zelfs vrij beperkt, zodat dit commando kan mislukken.
Als dit commando niet werkt, en als uw invoer de verkeerde codecs gebruikt voor de uitvoercontainer, zult u waarschijnlijk opnieuw moeten coderen. In dit geval zullen de codecs worden aangepast aan de uitvoercontainer.
Om te begrijpen waarom dit nodig is, is het belangrijk om het verschil tussen video codecs en containers te leren. Dit zal u helpen te begrijpen waarom het veranderen van containers werkt en waarom de containers MP4 en MKV eigenlijk weinig te maken hebben met video codecs.
Waarom is hercodering eigenlijk slecht?
Je kunt (meestal) niet de volledige kwaliteit behouden bij het encoden van een video die al geëncodeerd was. Dat komt omdat het origineel al gecomprimeerd is door informatie weg te gooien, en door het opnieuw te doen introduceer je generatieverlies .
Vaak wil je video opnieuw encoderen als bijvoorbeeld de afmetingen veranderen, of als je een specifieke bitsnelheid nodig hebt om je videostream in te persen, of als je originele video een codec gebruikt die je om wat voor reden dan ook niet kunt afspelen.
Dus, als je je MKV video in Handbrake laadt, en opnieuw codeert met x264, de H.264 codeur die Handbrake gebruikt, en opslaat in een MP4 container, ga je hoe dan ook kwaliteit verliezen, tenzij je de bitrate of kwaliteitsfactor zo hoog zet dat je het verschil niet (echt) ziet. Maar dan zal de bestandsgrootte ook groter zijn.
In het ideale geval zou je de video omzetten naar een ongecomprimeerde video, waarmee je geen kwaliteit verliest, maar wel bestanden krijgt van een tiental Gigabytes groot, zelfs voor een paar minuten videomateriaal.
Okay, maar ik moet echt hercoderen!
Als u echt moet hercoderen, zorg er dan voor dat u geen gemiddelde bitrate instelt, maar kies een Constant Rate Factor , dat is zoiets als “constante kwaliteit”. Net zoals “variable bit rate” voor MP3: Het zal ervoor zorgen dat de bits besteed worden aan de video delen die ze nodig hebben en het zal de algemene kwaliteit beter maken - bij dezelfde bestandsgrootte.
Sane CRF waarden liggen tussen 19 en 24, waarbij lager “beter” betekent. U zou het dus kunnen proberen met een Rate Factor van 19. Zorg er ook voor dat je het “High” profiel instelt, waarmee de encoder alle toeters en bellen kan gebruiken en de kwaliteit kan optimaliseren voor een gegeven bit rate.