Ingen uppladdning, 100% lokalt, inget konto

Artikel

Extrahera videobildrutor för miniatyrbilder och kontaktblad

En video är en sekvens av stillbilder. Att dra ut en av dessa bilder ger dig en miniatyrbilder, ett omslag eller ett kontaktblad. Resultatet är skarpare och mer förutsägbart när du förstår hur en videocodec lagrar sina bildrutor och vilka ögonblick som är värda att fånga.

Bildrutor och bildfrekvens

En videofil är en sekvens av stillbilder som visas tillräckligt snabbt för att skapa illusionen av rörelse. Antalet bilder som visas per sekund är bildfrekvensen, uttryckt i fps. Vanliga värden är 24 fps för biograf, 25 fps för PAL-utsändning, 30 fps för webbvideo och 60 fps för spelmaterial. Vid 24 fps innehåller en tvåtimmarsfilm ungefär 172 800 enskilda bildrutor. Varje bildruta motsvarar ett enda ögonblick i tid; att extrahera en fryser det ögonblicket som en fristående bild. Bildfrekvensen avgör också hur många bildrutor du får per sekund material när du extraherar ett batch: vid 30 fps ger att dra varje bildruta från en minut video 1 800 bilder, vilket ofta är mycket mer än du behöver. Att extrahera vid en lägre bildfrekvens, eller var N:te bildruta med verktyg som stöder det, är ett praktiskt sätt att minska den volymen medan du fortfarande täcker hela varaktigheten.

En tidslinje-remsa som visar 24 enskilda bildrutor per sekund material, med bildruts-nummer och tidsstämpel synlig under varje bildruta.

Nyckelbildrutor vs interpolerade bildrutor

Moderna videocodecs lagrar inte varje bildruta som en fullständig bild. De använder tre bildrutetyper för att spara utrymme. En I-frame, även kallad nyckelbildruta, är en fullständig, fristående bild. En P-frame lagrar bara de pixlar som ändrats sedan den senaste I-framen eller P-framen. En B-frame lagrar ändringar relativt till både en föregående bildruta och en framtida bildruta, vilket kräver bildrutor på båda sidor för att rekonstruera den. Eftersom en P-frame eller B-frame är ofullständig i sig kräver avkodning av en de omgivande referensbildrutorna. Om dessa referensbildrutor innehåller rörelseoskärpa eller en övergång ärver den rekonstruerade bilden den oskärpan. En I-frame däremot avkodas oberoende. Den är alltid skarp eftersom den inte lånar något från grannar. När du extraherar en bildruta för användning som miniatyrbild ger att landa på en I-frame det renaste möjliga resultatet. De flesta codecs placerar I-frames vid scenklipp, som naturligt är skarpa startpunkter.

Att välja rätt ögonblick

Även en välAvkodad I-frame kan vara en dålig miniatyrbild om det fångade ögonblicket är ofördelaktigt. Flera faktorer minskar miniatyrbildskvaliteten. Rörelseoskärpa uppstår när kameran eller motivet rör sig snabbt under bildruta-exponeringen; den resulterande suddigheten gör att en bildruta ser mjuk ut trots att avkodningen var ren. Övergångsbildrutor fångade mitt i en upplösning eller ett bortton innehåller två överlappande bilder och fungerar sällan som fristående bilder. Underexponerade eller överexponerade bildrutor, vanliga i början av en scen innan auto-exponering stabiliserar sig, förlorar detaljer i skuggor eller höjdpunkter. De bästa miniatyrbilds-bildrutorna kommer från ögonblick av tydlig handling eller uttryck, bra belysning och en stabil kamera. Att bläddra igenom videon med en spelare som visar exakta tidsstämplar låter dig identifiera dessa ögonblick innan du extraherar dem. En bildruta som ser bra ut pausad i en spelare kommer generellt sett att se bra ut som en stilla export.

En videospelare pausad på en välbelyst, stabil bildruta av ett motiv mitt i en handling, med en tidsstämpel visad i hörnet.

Export: upplösning, format och var N:te bildruta

När du extraherar en bildruta bör den exporterade bilden matcha videons ursprungliga upplösning. Uppskalning introducerar interpoleringsartefakter; nedskalning kastar bort pixlar du kanske vill ha. En 1080p-video producerar 1920x1080 pixelbilder, och en 4K-video producerar 3840x2160. För format bevarar PNG varje pixel exakt och är rätt val när du behöver maximal skärpa för redigering eller ytterligare skalning. JPEG är mindre och bra för förhandsvisning eller delning, men introducerar komprimeringsartefakter runt skarpa kanter. Om du bygger ett kontaktblad, ett rutnät av små representativa bildrutor som täcker hela varaktigheten, är att extrahera vid en fast bildfrekvens i stället för att hämta varje bildruta standardtillvägagångssättet: att begära 1 bildruta per sekund från en 30 fps-källa ger dig en bild per sekund material, och en högre frekvens som 5 eller 10 fps ger en tätare uppsättning för närmare granskning. Den exakta frekvensen beror på hur mycket detalj du behöver kontra hur många bilder du vill hantera.

Gör det lokalt med video-extract-frames

Verktyget video-extract-frames på Sunasty avkodar din video helt inuti webbläsaren med FFmpeg kompilerat till WebAssembly. Du släpper en fil, väljer en bildfrekvens från 1 till 30 bildrutor per sekund, väljer PNG eller JPEG, och verktyget avkodar bildrutor vid den frekvensen i din webbläsares minne och erbjuder resultaten som individuella nedladdningar, begränsat till 300 bildrutor per körning. Din videofil lämnar aldrig din enhet. Inga bytes skickas till en server vid något tillfälle under processen. Detta spelar roll för material som innehåller personligt eller känsligt innehåll: en familjeinspelning, en intervju eller rå film innan redigering. Webbläsaren laddar videon i ett virtuellt filsystem i RAM, kör FFmpeg-avkodningen och ger tillbaka bilderna till dig. Avvägningen är att avkodning görs i programvara på din CPU snarare än av dedikerad hårdvara, så en lång video med hög upplösning tar längre tid än ett inbyggt program skulle. För att extrahera en handfull bildrutor eller producera ett kontaktblad från ett kort klipp är hastigheten praktisk.

Verktyg i den här artikeln

Vanliga frågor

Varför ser min extraherade bildruta suddig ut?

Den vanligaste orsaken är att landa på en P-frame eller B-frame under ett rörelseögonblick. Dessa bildrutor lagrar skillnader snarare än fullständiga bilder och rörelseoskärpa i källmaterialet förs in i avkodningen. Försök att extrahera den närmaste I-framen, som motsvarar ett scenklipp eller en periodisk nyckelbildruta, för ett skarpare resultat.

Ska jag exportera bildrutor som PNG eller JPEG?

PNG om du planerar att redigera bildrutan, skala upp den eller använda den i ett sammanhang där komprimeringsartefakter skulle synas. JPEG om du behöver en mindre fil för snabb delning eller förhandsgranskning och den lilla kvalitetsminskningen är acceptabel. För miniatyrbilder som visas vid en fast liten storlek är JPEG vid en rimlig kvalitetsinställning vanligtvis bra.

Hur skapar jag ett kontaktblad från en video?

Välj en bildfrekvens som är låg nog att ge dig ett hanterbart antal stillbilder, i stället för en enda tidsstämpel. För ett tvåminutersklipp ger 1 bildruta per sekund omkring 120 bildrutor, vilket är tätt nog för att välja ett bra rutnät från; utdata är begränsad till 300 bildrutor per körning oavsett. Det finns ingen grövre frekvens än 1 fps i dagsläget, så för ett glesare blad, extrahera vid 1 fps och behåll bara de bildrutor du vill ha till det slutliga rutnätet.