Artikel
Videoframes extraheren voor miniaturen en contactvellen
Een video is een reeks stilstaande beelden. Een van die beelden eruit halen geeft u een miniatuur, een omslag of een contactvel. Het resultaat is scherper en voorspelbaarder wanneer u begrijpt hoe een videocodec zijn frames opslaat en welke momenten het waard zijn te vastleggen.
Frames en framerate
Een videobestand is een reeks stilstaande beelden die snel genoeg worden weergegeven om de illusie van beweging te creëren. Het aantal beelden dat per seconde wordt getoond is de framerate, uitgedrukt in fps. Gangbare waarden zijn 24 fps voor cinema, 25 fps voor PAL-uitzending, 30 fps voor webvideo en 60 fps voor gamingbeelden. Bij 24 fps bevat een film van twee uur ongeveer 172.800 afzonderlijke frames. Elk frame komt overeen met een enkel moment in de tijd; een frame extraheren bevriest dat moment als een zelfstandig beeld. De framerate bepaalt ook hoeveel frames u per seconde beeldmateriaal krijgt bij het extraheren van een batch: bij 30 fps geeft het extraheren van elk frame uit één minuut video 1.800 beelden, wat vaak veel meer is dan u nodig heeft. Extraheren met een lagere framerate, of elk N-de frame met tools die dat ondersteunen, is een praktische manier om dat volume te verminderen terwijl u toch de volledige duur dekt.

Keyframes versus geïnterpoleerde frames
Moderne videocodecs slaan niet elk frame op als een volledig beeld. Ze gebruiken drie frametypen om ruimte te besparen. Een I-frame, ook keyframe genoemd, is een volledig, op zichzelf staand beeld. Een P-frame slaat alleen de pixels op die zijn veranderd sinds het laatste I-frame of P-frame. Een B-frame slaat wijzigingen op ten opzichte van zowel een vorig frame als een toekomstig frame, waarbij frames aan beide kanten nodig zijn om het te reconstrueren. Omdat een P-frame of B-frame op zichzelf onvolledig is, vereist het decoderen ervan de omringende referentieframes. Als die referentieframes bewegingsonscherpte of een overgang bevatten, erft het gereconstrueerde beeld die onscherpte. Een I-frame wordt daarentegen onafhankelijk gedecodeerd. Het is altijd scherp omdat het niets leent van buren. Bij het extraheren van een frame als miniatuur geeft het landen op een I-frame het schoonste mogelijke resultaat. De meeste codecs plaatsen I-frames bij scèneovergangen, die van nature scherpe startpunten zijn.
Het juiste moment kiezen
Zelfs een goed gedecodeerd I-frame kan een slechte miniatuur maken als het vastgelegde moment onflatterend is. Verschillende factoren verminderen de kwaliteit van miniaturen. Bewegingsonscherpte treedt op wanneer de camera of het onderwerp snel beweegt tijdens de belichting van het frame; de resulterende waas maakt een frame er zacht uitzien, ook al was de decodering schoon. Overgangskaders die midden in een dissolve of fade worden gevangen, bevatten twee overlappende beelden en werken zelden als zelfstandige foto's. Onderbelichte of overbelichte frames, gangbaar aan het begin van een scène voor automatische belichting is ingesteld, verliezen detail in de schaduwen of highlights. De beste miniatuurframes komen uit momenten van duidelijke actie of uitdrukking, goede belichting en een stabiele camera. Door de video scrollen met een speler die exacte tijdstempels toont, laat u die momenten identificeren voor u ze extraheert. Een frame dat er goed uitziet gepauzeerd in een speler zal er over het algemeen goed uitzien als een stilexport.

Exporteren: resolutie, formaat en elk N-de frame
Wanneer u een frame extraheert, moet de geëxporteerde afbeelding overeenkomen met de native resolutie van de video. Opschalen introduceert interpolatieartefacten; neerschalen verwijdert pixels die u misschien wilt. Een 1080p-video produceert 1920x1080-pixelafbeeldingen, en een 4K-video produceert 3840x2160. Voor het formaat bewaart PNG elke pixel exact en is de juiste keuze wanneer u maximale scherpte nodig heeft voor bewerking of verder schalen. JPEG is kleiner en prima voor het bekijken van voorbeelden of delen, maar introduceert compressieartefacten rond scherpe randen. Als u een contactvel bouwt, een raster van kleine representatieve frames die de volledige duur bestrijken, is extraheren met een vaste framerate in plaats van elk frame te pakken de standaardbenadering: 1 frame per seconde opvragen van een bron van 30 fps geeft u één beeld per seconde beeldmateriaal, en een hogere framerate zoals 5 of 10 fps geeft een dichtere set voor nauwkeurige inspectie. Het exacte tempo hangt af van hoeveel detail u nodig heeft versus hoeveel afbeeldingen u wilt verwerken.
Lokaal doen met video-extract-frames
De video-extract-frames tool op Sunasty decodeert uw video volledig in de browser met FFmpeg gecompileerd naar WebAssembly. U sleept een bestand, kiest een framerate van 1 tot 30 frames per seconde, kiest PNG of JPEG, en de tool decodeert frames op die framerate in het geheugen van uw browser en biedt de resultaten aan als losse downloads, met een maximum van 300 frames per run. Uw videobestand verlaat uw apparaat nooit. Er worden geen bytes naar een server gestuurd op enig punt tijdens het proces. Dit is belangrijk voor beeldmateriaal dat persoonlijke of gevoelige inhoud bevat: een familie-opname, een interview, of ruw beeldmateriaal voor bewerking. De browser laadt de video in een virtueel bestandssysteem in RAM, voert de FFmpeg-decodering uit en geeft de afbeeldingen aan u terug. Het compromis is dat decodering wordt gedaan in software op uw CPU in plaats van door speciale hardware, zodat een lange video met hoge resolutie meer tijd kost dan een native applicatie. Voor het extraheren van een handvol frames of het produceren van een contactvel van een korte clip is de snelheid praktisch.
Tools in dit artikel
- Videoframes extraherenHaal stilstaande frames uit een video als PNG- of JPG-afbeeldingen direct in je browser. Geen upload.
- Video inkortenKnip een video tot een start-/eindtijdbereik direct in je browser. Snelle stream-kopie of nauwkeurige hercodering. Geen upload.
- Video naar GIFConverteer een videoclip naar een geanimeerde GIF direct in je browser. Geen upload.
Veelgestelde vragen
Waarom ziet mijn geëxtraheerde frame er wazig uit?
De meest voorkomende oorzaak is het landen op een P-frame of B-frame tijdens een moment van beweging. Deze frames slaan verschillen op in plaats van volledige beelden, en bewegingsonscherpte in het bronbeeldmateriaal wordt meegenomen in de decodering. Probeer het dichtstbijzijnde I-frame te extraheren, dat overeenkomt met een scèneovergang of een periodiek keyframe, voor een scherper resultaat.
Moet ik frames exporteren als PNG of JPEG?
PNG als u het frame wilt bewerken, opschalen of gebruiken in een context waar compressieartefacten zichtbaar zouden zijn. JPEG als u een kleiner bestand nodig heeft voor snel delen of bekijken van voorbeelden en de lichte kwaliteitsvermindering acceptabel is. Voor miniaturen die op een vaste kleine grootte verschijnen, is JPEG op een redelijke kwaliteitsinstelling doorgaans prima.
Hoe maak ik een contactvel van een video?
Kies een framerate die laag genoeg is om een behapbaar aantal stilstaande beelden te krijgen, in plaats van een enkel tijdstempel. Voor een clip van twee minuten geeft 1 frame per seconde ongeveer 120 frames, wat dicht genoeg is om een goed raster uit te kiezen; de uitvoer is sowieso beperkt tot 300 frames per run. Er is vandaag geen lager tempo dan 1 fps, dus voor een spaarzamer vel extraheert u op 1 fps en houdt u alleen de frames die u voor het uiteindelijke raster wilt.