Verkkopohjainen animaatioeditori kuvakehysjärjestelmällä ja läpinäkyvällä videoviennillä
Luovien työkalujen tiimi tarvitsi selainpohjaisen animaatioeditorin, joka antoi suunnittelijoille mahdollisuuden luoda sujuvia, kuvakehyspohjaisia animaatioita useilla objekteilla ja viedä ne videoina täydellä alpha channel -läpinäkyvyydellä – mahdollistaen saumattoman päällekkäisyyden muun videosisällön kanssa.
Keskustele Projektistasi
Haaste
Animoidun materiaalin luominen läpinäkyvillä taustoilla videotuotantoon oli hankalaa:
- Vain työpöytätyökalut — Olemassa olevat animaatiotyökalut (After Effects, Motion) vaativat kalliita lisenssejä ja työpöytäasennuksen
- Ei Alpha Channel -vientiä — Useimmat verkkopohjaiset animaatiotyökalut veivät läpinäkymättömiä videoita ilman läpinäkyvyyden tukea
- Monimutkainen kuvakehysanimaatio — Suunnittelijat tarvitsivat intuitiivisen keyframe-pohjaisen animaation helpotusohjauksella, ei vain CSS transitions -animaatioita
- Reaaliaikainen esikatselu — Editorit tarvitsivat nähdä animaatioiden toistavan sujuvasti ennen vientiä
- Useita objektityyppejä — Animaatiot vaativat muotoja ja tekstiä itsenäisillä animaation aikajanoilla
- Vientilaatu — Tulosteen piti olla tuotantotason videotiedostoja, jotka ovat käytettävissä ammattimaisissa editointityönkuluissa
Meidän Ratkaisumme
Rakensimme verkkopohjaisen animaatioeditorin käyttäen React- ja Pixi.js-kirjastoja laitteistokiihdytettyyn renderointiin, kuvakehysmoottorin yli 30 easing function -toiminnolla ja FFmpeg-pohjaisen backend-järjestelmän WebM-videoiden vientiin täydellä VP9 alpha channel -tuella.
Arkkitehtuuri
- Frontend: React TypeScriptillä, Pixi.js WebGL-kiihdytettyyn canvas-renderointiin
- Tilanhallinta: Zustand keskitettyyn kohtauksen tilaan
- Animaatiomoottori: Mukautettu keyframe-interpolointimoottori easing-kirjastolla
- Backend: Express.js WebSocket-tuella reaaliaikaiseen kehysten suoratoistoon
- Videon koodaus: FFmpeg (fluent-ffmpeg:n kautta) VP9 WebM -koodaukseen alpha channel -tuella
- Monorepo: pnpm workspace ja jaetut TypeScript-tyypit frontendin ja backendin välillä
Animaatiomoottori
Kuvakehysjärjestelmä
Animaatiomoottorin ydin tukee kuvakehyspohjaista animaatiota useiden ominaisuuksien osalta:
- Sijainti — X/Y-koordinaatit liikeradoille
- Kierto — Asteisiin perustuva kiertoanimaatio
- Väri — Heksavärin interpolointi sujuvilla siirtymillä
- Alpha — Läpinäkyvyysanimaatio haalistusefekteihin
- Koko — Leveyden, korkeuden ja säteen skaalaus
Jokainen kuvakehys tallentaa ajan (millisekunteina), osajoukon animoituja ominaisuuksia ja valitun easing function -toiminnon. Moottori interpoloi ympäröivien kuvakehysten välillä milloin tahansa, soveltaen sopivaa easing curve -käyrää.
Easing-kirjasto (yli 30 toimintoa)
Kattava easing-kirjasto, joka kattaa kaikki standardi animaatiokäyrät:
- Linear, Quadratic, Cubic, Quartic, Quintic
- Sinusoidal, Exponential, Circular
- Elastic (jousimainen ylitys), Back (ennakointi), Bounce
- Jokainen saatavilla ease-in, ease-out ja ease-in-out -muunnoksina
Interpolointi
Minkä tahansa annetun aikaleiman osalta moottori:
- Etsii ympäröivät kuvakehykset (ennen ja jälkeen)
- Laskee normalisoidun edistymisen niiden välillä (0–1)
- Soveltaa valitun easing function -toiminnon edistymisarvoon
- Interpoloi ominaisuusarvot (lineaarinen numeroille, color lerp heksa-arvoille)
- Palauttaa täydellisen joukon animoituja ominaisuuksia renderointia varten
Canvas ja renderointi
Objektityypit
- Suorakulmiot — Konfiguroitava leveys, korkeus, väri, alpha, kierto
- Ympyrät — Konfiguroitava säde, väri, alpha, kierto
- Teksti — Konfiguroitava font family, font size, sisältö, väri, alpha
Laitteistokiihdytetty renderointi
- Pixi.js WebGL-renderointi sujuvaan 60fps esikatselun toistoon
- Konfiguroitava canvas-resoluutio (oletus 1920x1080 30fps:llä)
- Läpinäkyvän taustan tuki säädettävällä taustan alphalla
- Interaktiivinen objektin valinta visuaalisella korostuksella
- Reaaliaikainen animaation toisto toisto-, tauko- ja aikajanan selauksella
Editorin käyttöliittymä
Työkalurivi
Objektinluontipainikkeet suorakulmioiden, ympyröiden ja tekstin lisäämiseksi kohtaukseen oletusominaisuuksilla, joita voidaan mukauttaa välittömästi.
Ominaisuuspaneli
Valitun objektin ominaisuudet muokattavissa reaaliaikaisesti: sijainti, koko, väri, alpha, kierto ja tyyppikohtaiset ominaisuudet (tekstin sisältö, fonttiasetukset).
Aikajana
Visuaalinen aikajana, joka näyttää:
- Kuvakehysmerkit niiden aika-asemissa per objekti
- Toistopää nykyiselle ajalle selauksella
- Kuvakehyskohtainen easing function -valinta
- Lisää/poista kuvakehyspainikkeet nykyisessä toistopään sijainnissa
Videon vientiprosessi
Kehysten kaappaus
- Animaation kesto ja FPS määrittävät kehysten kokonaismäärän
- Jokainen kehys renderöidään yksilöllisesti täydellä resoluutiolla
- Canvas-sisältö kaapataan PNG blobina kehystä kohden
- Kehykset kerätään siirrettäväksi koodaus-backendille
Koodaus-backend
Express.js-backend käsittelee videokoodauksen työperusteisen järjestelmän kautta:
- Työn luominen — Asiakas pyytää uutta vientityötä (UUID-pohjainen)
- Kehysten lataus — Kehykset ladataan erinä (tai striimataan WebSocketin kautta)
- FFmpeg-koodaus — Kehykset kootaan WebM-videoksi VP9-koodekilla
- Alpha Channel — Käyttää yuva420p-pikselimuotoa täyden läpinäkyvyyden tukemiseen
- Edistymisen seuranta — Reaaliaikaiset edistymispäivitykset koodauksen aikana
- Lataus — Valmis video ladattavissa läpinäkyvyyden varmistuksella
WebSocket-vaihtoehto
Reaaliaikaista vientiä varten kehykset voidaan suoratoistaa suoraan WebSocketin kautta HTTP-erälatauksen sijaan, ja live-edistymispäivitykset ovat käytettävissä kaappaus-, lataus- ja koodausvaiheissa.
Tärkeimmät ominaisuudet
- Kuvakehysanimaatio — Aikajana-pohjainen animaatio ominaisuuskohtaisilla kuvakehyksillä
- Yli 30 Easing Function -toimintoa — Kattava easing-kirjasto ammattimaisille animaatiokäyrille
- Läpinäkyvä videovienti — VP9 WebM täydellä alpha channel -tuella
- Laitteistokiihdytetty Canvas — Pixi.js WebGL-renderointi sujuvaan reaaliaikaiseen esikatseluun
- Useita objektityyppejä — Suorakulmiot, ympyrät ja teksti itsenäisellä animaatiolla
- Reaaliaikainen esikatselu — Toista, keskeytä ja selaa animaatioita välittömästi
- Erä- ja suoratoistovienti — HTTP-erälataus tai WebSocket-reaaliaikainen kehysten suoratoisto
- Konfiguroitava tulostus — Resoluutio-, FPS- ja bittinopeusasetukset vientiin
- Tyypitysturvallinen Monorepo — Jaetut TypeScript-tyypit frontendin ja backendin välillä
- Mukautetut taustat — Säädettävä taustaväri ja alpha kuva-/videotuella
Tulokset
Teknologiapino
caseStudyDetail.more Tapaustutkimukset
Tutustu lisää teknisiin toteutuksiimme
AI-pohjainen laskujen käsittely OCR:n ja QuickBooks-integraation avulla
Keskisuuri yritys, joka käsitteli satoja toimittajalaskuja kuukausittain, halusi poistaa manuaalisen tiedonsyötön poimimalla laskutiedot automaattisesti AI/OCR:n avulla ja synkronoimalla ne suoraan QuickBooks-järjestelmään kirjanpitoa ja maksujen seurantaa varten.
Asiakaspuolen mainosten upotus (CSAI) SCTE-35-merkkien jäsennyksellä ja monialustaisen soittimen integroinnilla
Videoiden suoratoistoalustan piti toteuttaa Client-Side Ad Insertion (CSAI) verkko-, mobiili- ja Connected TV -sovellusten yli — mahdollistaen personoidut, laitekohtaiset mainoskokemukset täydellä mainosinteraktion tuella (klikkaavat peittokuvat, kumppanibannerit, ohituspainikkeet), joita server-side insertion ei voi tarjota.
Valmis Muuttamaan Liiketoimintaasi?
Keskustellaan siitä, miten voimme soveltaa vastaavia ratkaisuja haasteisiisi.