Spør du meg, er klipping av video i videoredigeringsprogrammer drepen.
Hovedsakelig fordi det tar så vanvittig lang tid å rendre.
Denne uka har vi snakka med den 32 år gamle systemutvikleren og selvstendige konsulenten Mikael Finstad.
Når han ikke jobber, farter han rundt på eventyr med dronen sin. Så mye farting ble det, at han satt med mengder med videoopptak, og et problem å løse.
Resultatet ble videoredigeringsprogrammet lossless-cut.
#1. Hva har du bygd, og hvorfor?
Jeg er mye ute og farter med drone og kamera, og tar opp endel video. Et kjent problem med video er jo at det tar mye plass, og ofte filmer man mer enn det man behøver.
Å skulle importere alt dette i et videoredigeringsprogram - å lage prosjekter for å klippe ut det man behøver fra hver videofil og så å bruke timer på å rendre det tilbake til video, og miste videokvalitet - er noe de fleste ikke gidder.
«Jeg visste at det allerede var mulig å klippe i videofiler uten å tape kvalitet ved hjelp av ffmpeg-kommandolinjen.»
Det gadd ikke jeg heller, men jeg visste at det allerede var mulig å klippe i videofiler uten å tape kvalitet ved hjelp av ffmpeg-kommandolinjen.
Siden jeg nettopp hadde begynt å snuse på React, hadde lyst å lære meg Electron og bli flinkere i JavaScript generelt, så bestemte jeg meg for å implementere et enkelt UI for å løse dette problemet.
Jeg så at det allerede fantes et verktøy som hadde tilsvarende funksjonalitet, men jeg syntes det burde finnes et open-source alternativ, så da satt jeg i gang.
Første versjon begynte med å være superenkel, og kunne bare klippe visse type filer, med kun én operasjon per video. Etter mye tilbakemelding og ønsker, har det ballet på seg med funksjonalitet.
«Jeg husker jeg satt hele helgen til langt på natt for å kode ferdig den første versjonen.»
#2. Hvor lenge har du jobbet med dette hobbyprosjektet?
Fra Github ser jeg at første commit var 30. oktober 2016. Dette var en søndag, og jeg husker jeg satt hele helgen til langt på natt for å kode ferdig den første versjonen.
Det var mest arbeid i starten, men jeg prøver å få til noen spikes av og til for å få unna issues og oppgradere kodebasen - det er jo ofte slik at når man ser på sin gamle kode så lurer man på hvem var denne nissen som skrev så dårlig kode.
Vanskelig å si hvor mye tid jeg har brukt på det totalt, men det er 240 commits nå. Jeg satt nok mest i helgene fordi jeg jobbet på dagtid tidligere.
#3. Hvordan henger prosjektet sammen?
Selve hjernen i applikasjonen er ffmpeg og Chromium.
Hovedoppgaven til ffmpeg er logisk sett ganske enkel; ta i mot et fra- og til-tidspunkt, samt en videofil, og klippe denne.
Chromium-baserte Electron gir en utrolig enkel måte å bygge brukergrensesnitt ved hjelp av HTML/Javascript, og lar deg lage dønn stabile applikasjoner basert på en kodebase som har blitt polert i årevis av blant annet Google.
Oppå HTML bruker jeg React og moderne Javascript, samt et utvalg npm-pakker for å slippe å gjenoppfinne hjulet. Ellers gir package.json en god oversikt over hvilke open-source-helter som har gjort prosjektet mitt mulig.
#4. Hva har vært den største utfordringen hittil?
Det har vært flere utfordringer, og noen av disse er ennå ikke løst.
En tidlig utfordring var å klare å inkludere ffmpeg-binæren inn i en applikasjon som skulle kunne kjøre på Windows, MacOS og Linux. Dette var litt komplisert i Electron på den tiden, og skaper noen ganger trøbbel for antivirus.
En annen utfordring er at det finnes så utallig mange ulike video- og lydkodeker og filformater med ulike proprietære strømmer. Ffmpeg håndterer mye av dette, men det er vanskelig å teste alle formater som finnes i verden.
Lager ny browser, basert på Chromium
- Vi så et behov for en ny nettleser, forteller Opera-eksene.
Dessuten har Chromium kun valgt å støtte noen få formater, og de har sagt at de aldri kommer til å støtte den nye H.265 videokompresjons-standarden, på grunn av en heslig patent. Dette er et problem fordi videoavspilleren i Chromium bruker en spesialversjon av ffmpeg som ikke støtter alle codecs.
Et annet problem har vært at når man klipper en video, så vil man miste data frem til neste keyframe - ofte flere sekunder fra der man har klipt. Ffmpeg løser dette på ulike måter ved hjelp av kommandolinjeflagg, men dette er ikke så intuitivt for hvermannsen. Alle problemene som ennå ikke er løst finnes på Github.
«Jeg får utrolig mye positiv tilbakemelding på mail og Github.»
#5. Hva er du mest stolt av i forbindelse med prosjektet?
Jeg er veldig stolt av å kunne hjelpe så mange som har samme problem som meg, uten at det skal måtte koste noe. Jeg får utrolig mye positiv tilbakemelding på mail og Github.
#6. Bruker du prosjektet til noe spesielt i dag?
Jeg har ikke analytics, men jeg er ganske sikker på at tusenvis av mennesker bruker programmet.
Programmet har blitt spredd på ulike programvarenettsider rundt hele verden - til og med en japansk nettside.
Mange profesjonelle videofolk og vanlige folk har gitt meg tilbakemelding på hvor mye det har hjulpet dem i jobben deres.
«Jeg har fått min beste, og nåværende, kunde kun på grunn av dette prosjektet.»
#7. Hva er fordelene med å ha et hobbyprosjekt?
Man lærer masse, det er moro, og man får verden til å gå fremover.
Dessuten er det gull for å markedsføre seg selv som utvikler. Jeg har fått min beste, og nåværende, kunde kun på grunn av dette prosjektet.
Jonas (35) er CTO for en norsk undervannsdrone
Ukas Koder Jonas Follesø er ansvarlig for teknologien som ble brukt under hevingen av KNM Helge Ingstad.
#8. Har du noen planer for prosjektet ditt fremover?
Det er mange åpne issues på Github med små ønsker og bugs. Dette er noe jeg ønsker å ta tak i.
Dessuten har flere grafiske designere kontaktet meg med forslag til nytt brukergrensesnitt og bedre UX. Dette er en større jobb som kommer til å ta noen dager, men jeg ønsker å gjøre applikasjonen mer brukervennlig på sikt.
Det jeg kanskje ser på som aller viktigst akkurat nå er å kunne støtte flere formater, blant annet H.265, da dette brukes i nye droner og kameraer. Dette vil kunne gjøres ved å bytte ut videoavspillerkomponenten, kanskje med VLC. Hvis noen har kompetanse på dette, så er det bare å ta kontakt!
Kent får AVI-filer til å klikke, for kunstens skyld
Koder glitch-effekter inn i videoer i Rust. - Det er kult å arbeide på byte-nivå, sier Kent Daleng bak "avirus".