I'm switching from the abandoned videocontext library to using PixiJS for rendering and my own stuff for media playback https://pixijs.com. Export unfortunately seems to be much slower, but hopefully I can optimize some stuff later 馃
PixiJS | The HTML5 Creation Engine | PixiJS

PixiJS - The HTML5 Creation Engine. Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.

Next step is switching to #Mediabunny for de/muxing https://mediabunny.dev
Mediabunny

A JavaScript library for reading, writing, and converting media files. Directly in the browser, and faster than anybunny else.

Mediabunny
And now I can enjoy my weekend 馃槍 https://github.com/miru-media/miru/pull/22/changes
feat: PixiJS video compositing and Mediabunny transcoding by taye 路 Pull Request #22 路 miru-media/miru

Framework-agnostic, browser-based components for photo and video editing with WebGL and WebCodecs - feat: PixiJS video compositing and Mediabunny transcoding by taye 路 Pull Request #22 路 miru-media/miru

GitHub
Adding transform controls to the canvas. Getting closer to being actually useful!

Currently working on a feature to preview changes in the #MiruVideoEditor without syncing so that:

- users are less likely to get confused by clips flashing between their and someone else's changes (in theory)
- fewer ephemeral #CRDT updates are sent between users
- we can more easily have an [Esc] key to cancel current drag/resize, or close a dialog without applying changes
- we can use the same preview system with a lightweight real-time API for live changes from other clients

next up: gaps and layers
did a neat little optimization: while paused, the editor re-renders only if something has changed. Very simple using Signals reactivity and saves users' batteries!
I'll be honest: I'm procrastination on the gaps and layers stuff which is a lot of going through the different cases of resizing, moving, adding and deleting clips with and without ripple editing turned on. There's also potentially spooky #CRDT stuff involved. Help