Webbaseret animationseditor med keyframe-system & eksport af gennemsigtig video
Et team for kreative værktøjer havde brug for en browserbaseret animationseditor, der gjorde det muligt for designere at skabe flydende, keyframe-drevne animationer med flere objekter og eksportere dem som videoer med fuld alpha-kanal gennemsigtighed — hvilket muliggjorde problemfri overlejring på andet videoindhold.
Diskuter Dit Projekt
Udfordringen
At skabe animerede aktiver med gennemsigtige baggrunde til videoproduktion var besværligt:
- Kun desktop-værktøjer — Eksisterende animationsværktøjer (After Effects, Motion) krævede dyre licenser og desktopinstallation
- Ingen eksport af alpha-kanal — De fleste webbaserede animationsværktøjer eksporterede uigennemsigtige videoer uden understøttelse af gennemsigtighed
- Kompleks Keyframing — Designere havde brug for intuitiv keyframe-baseret animation med easing-kontrol, ikke kun CSS-overgange
- Forhåndsvisning i realtid — Editorer havde brug for at se animationer afspille flydende før eksport
- Flere objekttyper — Animationer krævede former og tekst med uafhængige animationstidslinjer
- Eksportkvalitet — Output skulle være videofiler i produktionskvalitet, der kunne bruges i professionelle redigeringsarbejdsgange
Vores Løsning
Vi byggede en webbaseret animationseditor ved hjælp af React og Pixi.js til hardware-accelereret gengivelse, en keyframe-motor med 30+ easing-funktioner, og en FFmpeg-drevet backend til eksport af WebM-videoer med fuld VP9 alpha-kanal understøttelse.
Arkitektur
- Frontend: React med TypeScript, Pixi.js til WebGL-accelereret canvas-gengivelse
- State Management: Zustand til centraliseret scenetilstand
- Animationsmotor: Brugerdefineret keyframe-interpolationsmotor med easing-bibliotek
- Backend: Express.js med WebSocket-understøttelse til streaming af frames i realtid
- Videokodning: FFmpeg (via fluent-ffmpeg) til VP9 WebM-kodning med alpha-kanal
- Monorepo: pnpm workspace med delte TypeScript-typer på tværs af frontend og backend
Animationsmotor
Keyframe-system
Kerneanimationsmotoren understøtter keyframe-baseret animation på tværs af flere egenskaber:
- Position — X/Y-koordinater for bevægelsesstier
- Rotation — Gradbaseret rotationsanimation
- Farve — Hex-farveinterpolation med flydende overgange
- Alpha — Opacitetsanimation for fade-effekter
- Størrelse — Bredde-, højde- og radiusskalering
Hver keyframe gemmer tidspunktet (i millisekunder), et undersæt af animerede egenskaber, og en valgt easing-funktion. Motoren interpolerer mellem omgivende keyframes på ethvert tidspunkt, og anvender den passende easing-kurve.
Easing-bibliotek (30+ funktioner)
Et omfattende easing-bibliotek, der dækker alle standard animationskurver:
- Linear, Quadratic, Cubic, Quartic, Quintic
- Sinusoidal, Exponential, Circular
- Elastic (fjederlignende overskydning), Back (forventning), Bounce
- Hver tilgængelig i ease-in, ease-out og ease-in-out varianter
Interpolation
For et givet tidsstempel udfører motoren:
- Finder de omgivende keyframes (før og efter)
- Beregner normaliseret fremskridt mellem dem (0 til 1)
- Anvender den valgte easing-funktion på fremskridtsværdien
- Interpolerer egenskabsværdier (lineær for tal, color lerp for hex-værdier)
- Returnerer det komplette sæt af animerede egenskaber til gengivelse
Canvas & Gengivelse
Objekttyper
- Rektangler — Konfigurerbar bredde, højde, farve, alpha, rotation
- Cirkler — Konfigurerbar radius, farve, alpha, rotation
- Tekst — Konfigurerbar skrifttypefamilie, skriftstørrelse, indhold, farve, alpha
Hardware-accelereret gengivelse
- Pixi.js WebGL-gengivelse for flydende 60fps forhåndsvisning
- Konfigurerbar canvas-opløsning (standard 1920x1080 ved 30fps)
- Understøttelse af gennemsigtig baggrund med justerbar baggrunds-alpha
- Interaktiv objektvalg med visuel fremhævelse
- Realtids-animationafspilning med afspil, pause og tidslinjestyring
Redigeringsgrænseflade
Værktøjslinje
Knapper til oprettelse af objekter til at tilføje rektangler, cirkler og tekst til scenen med standardegenskaber, der kan tilpasses med det samme.
Egenskabspanel
Valgte objektegenskaber, der kan redigeres i realtid: position, størrelse, farve, alpha, rotation og typespecifikke egenskaber (tekstindhold, skriftindstillinger).
Tidslinje
Visuel tidslinje, der viser:
- Keyframe-markører ved deres tidspositioner pr. objekt
- Playhead for aktuel tid med tidslinjestyring
- Valg af easing-funktion pr. keyframe
- Kontroller til at tilføje/fjerne keyframe ved den aktuelle playhead-position
Videoeksportpipeline
Frame-indfangning
- Animationsvarighed og FPS bestemmer det samlede antal frames
- Hver frame gengives individuelt i fuld opløsning
- Canvas-indhold indfanget som PNG-blob pr. frame
- Frames indsamlet til upload til encoding-backend'en
Encoding-backend
Express.js-backend'en håndterer videokodning gennem et jobbaseret system:
- Joboprettelse — Klienten anmoder om et nyt eksportjob (UUID-baseret)
- Frame-upload — Frames uploades i batches (eller streames via WebSocket)
- FFmpeg-kodning — Frames samles til WebM-video med VP9-codec
- Alpha-kanal — Bruger yuva420p pixelformat for fuld gennemsigtighedsunderstøttelse
- Fremdriftssporing — Fremdriftsopdateringer i realtid under kodning
- Download — Færdig video tilgængelig til download med gennemsigtighedsverifikation
WebSocket-alternativ
Til eksport i realtid kan frames streames direkte via WebSocket i stedet for HTTP batch-upload, med live fremdriftsopdateringer gennem indfangnings-, upload- og kodningsfaserne.
Nøglefunktioner
- Keyframe-animation — Tidslinjebaseret animation med keyframes pr. egenskab
- 30+ Easing-funktioner — Komplet easing-bibliotek for professionelle animationskurver
- Gennemsigtig videoeksport — VP9 WebM med fuld alpha-kanal understøttelse
- Hardware-accelereret Canvas — Pixi.js WebGL-gengivelse for flydende forhåndsvisning i realtid
- Flere objekttyper — Rektangler, cirkler og tekst med uafhængig animation
- Forhåndsvisning i realtid — Afspil, pause og tidslinjestyring af animationer øjeblikkeligt
- Batch- & Streamingeksport — HTTP batch-upload eller WebSocket realtids frame-streaming
- Konfigurerbart output — Opløsning, FPS og bitrate-indstillinger for eksport
- Type-sikker Monorepo — Delte TypeScript-typer på tværs af frontend og backend
- Brugerdefinerede baggrunde — Justerbar baggrundsfarve og alpha med billede/video-understøttelse
Resultater
Teknologistak
caseStudyDetail.more Casestudier
Udforsk flere af vores tekniske implementeringer
AI-drevet fakturabehandling med OCR og QuickBooks-integration
En mellemstor virksomhed, der månedligt behandler hundredvis af leverandørfakturaer, havde brug for at eliminere manuel dataindtastning ved automatisk at udtrække fakturadata ved hjælp af AI/OCR og synkronisere dem direkte til QuickBooks for bogføring og sporing af betalinger.
Klient-side annonceindsættelse (CSAI) med SCTE-35-markørparsing og integration af afspillere på flere platforme
En videostreamingplatform skulle implementere klient-side annonceindsættelse (CSAI) på tværs af web-, mobil- og connected TV-apps – hvilket muliggjorde personaliserede annonceringer på enhedsniveau med fuld support for annonceinteraktion (klikbare overlays, følgebannere, skip-knapper), som server-side indsættelse ikke kan tilbyde.
Klar til at Transformere Din Virksomhed?
Lad os drøfte, hvordan vi kan anvende lignende løsninger til dine udfordringer.