Naar de inhoud

MP4 · MOV · Geen hercodering · Geen limiet op de grootte

Videometadata-remover

Een gratis videometadata-remover voor MP4 en MOV. Telefoonbeelden dragen net als foto’s GPS-coördinaten en je apparaatmodel mee — haal het eruit zonder één frame opnieuw te coderen.

Wat een telefoon in je video schrijft

Een clip die met een telefoon is opgenomen bevat doorgaans een QuickTime-locatie-atoom met je coördinaten in ISO 6709-formaat, aanmaak- en wijzigingstijdstempels in de film- en trackheaders, merk en model van het apparaat, en de naam van de encoder. Bewerkingsapps voegen daarna hun eigen titel-, commentaar- en artiestvelden toe.

Niets daarvan is zichtbaar wanneer de video speelt, en alles ervan reist mee met het bestand wanneer je het verstuurt.

Waarom we niet hercoderen

De voor de hand liggende manier om videometadata te verwijderen is het door een transcoder halen. Dat is wat tools op basis van ffmpeg.wasm doen, en dat kost drie dingen: het is traag, het downloadt tientallen megabytes aan WebAssembly, en het comprimeert je video opnieuw waardoor de uitvoer meetbaar slechter is dan de invoer.

De container maakt een betere aanpak mogelijk. In MP4 en MOV bevat de tabel stco binnen moov absolute byte-offsets die naar de mdat-box wijzen waar de frames staan. Een metadatabox verwijderen zou al die offsets verschuiven en het bestand kapot maken. Maar het formaat definieert een free-box: opvulling die elke demuxer overslaat. Dus herschrijven we het type van elke metadatabox naar free, zetten we de inhoud op nul en laten we de grootte ongemoeid. Er verschuift niets. Er wordt niets gedecodeerd.

Het resultaat is een bestand van dezelfde lengte als het origineel, met identieke frames, en zonder metadata.

Streamen, niet laden

Browsers raken maar al te graag door hun geheugen heen als je ze vraagt een bestand van 2 GB vast te houden. Wij doen dat nooit. De boxen op het hoogste niveau worden doorlopen door headers van 16 bytes te lezen via File.slice(), alleen de moov-box wordt volledig gelezen, en de uitvoer wordt samengesteld als een lijst met uitgestelde verwijzingen naar bereiken van het originele bestand. Het geheugengebruik blijft in de lage megabytes, ongeacht hoe lang je video is.

Vragen

Veelgestelde vragen

Wordt een video hercodeerd bij het opschonen?
Nee, en dat is het belangrijke deel. Een video hercoderen is traag en tast hem zichtbaar aan. We raken de videostream nooit aan: de metadata-atomen worden vervangen door standaard `free`-opvulling van precies dezelfde grootte, en de tijdstempels worden ter plekke op nul gezet. Elke chunk-offset klopt nog steeds, dus er wordt geen enkel frame opnieuw gecomprimeerd.
Hoe groot mag een video zijn die ik opschoon?
Heel groot. Het bestand wordt nooit in het geheugen geladen. We lezen alleen de `moov`-box — doorgaans een paar honderd kilobytes, zelfs in een clip van meerdere gigabytes —, passen die aan, en stellen de uitvoer samen uit uitgestelde verwijzingen naar het originele bestand.
Welke metadata dragen video’s eigenlijk mee?
Meer dan mensen verwachten. Telefoons schrijven GPS-coördinaten in een QuickTime-locatie-atoom, plus aanmaak- en wijzigingstijdstempels, merk en model van het apparaat, en de gebruikte encoder. Bewerkingssoftware voegt titels, commentaren en artiestvelden toe.
Welke videoformaten worden ondersteund?
MP4 en MOV, die samen zo’n beetje alles dekken wat een telefoon of camera produceert. Beide gebruiken dezelfde ISO Base Media File Format-container, en dat is wat de engine begrijpt. MKV, AVI en WebM worden nog niet ondersteund.