Sign in

Vanilagy

@vanilagy.bsky.social
255 followers 14 following 544 posts

Author of Mediabunny and Marble Blast Web. I love working on technically challenging projects that bring the best out of the web. mediabunny.dev

PostsRepliesMedia
Vanilagy @vanilagy.bsky.social · 08/10/2026
050
Vanilagy @vanilagy.bsky.social · 29/09/2026
Mediabunny v1.61.0 now supports HLS playlists with variable substitution! 🚀 This is a powerful feature where variables can be defined inline or via query parameters, and then substituted in URLs. An example:
000
Vanilagy @vanilagy.bsky.social · 25/09/2026
Trip Buck Bunny
050
Vanilagy @vanilagy.bsky.social · 21/09/2026
The life of a media demuxer developer: needing to make your perfectly spec-compliant and correct parser less strict because lots of invalid inputs are being produced in the wild and still accepted by other (lesser) parsers 😫
150
Vanilagy @vanilagy.bsky.social · 17/09/2026
I'm back. Library is almost complete and it's fucking glorious. The API is dead simple, just TypedArrays with SIMD operations. The code in the screenshot runs 6x faster than the scalar JS version. It has over 700 SIMD operations; they typically run at 5x-10x JavaScript speed
1302
Vanilagy @vanilagy.bsky.social · 16/09/2026
VLC unfortunately fails spectacularly at this task, lol
010
Vanilagy @vanilagy.bsky.social · 16/09/2026
Mediabunny v1.57.0 adds a TON of new features, among which is flipped video support! 🚀 Some videos in the wild are flipped horizontally via metadata in the file, and Mediabunny now fully supports reading, writing, encoding and decoding such files across both MP4 and WebM!
170
Vanilagy @vanilagy.bsky.social · 16/09/2026
The upcoming version of Mediabunny will automatically write the "btrt" (bitrate) boxes into MP4 files. This gives players and tools a better understanding of the media's data rate. The coolest thing is that this added exactly zero new API! Mediabunny determines it for you.
080
Vanilagy @vanilagy.bsky.social · 14/09/2026
Here's your reminder that Mediabunny is able to read & write metadata tags from and to basically every format! Includes every tag you could possibly want, including cover art. So, no need to use another library for this!
190
Vanilagy @vanilagy.bsky.social · 11/09/2026
The thing running looks like this:
050
Vanilagy @vanilagy.bsky.social · 11/09/2026
I'm working on a new library that enables real shared-memory multithreading for JavaScript, natively. Here, the main thread and a worker cooperatively increment a counter. The state object is truly shared between the two threads; no messages are ever exchanged after the initial handshake.
4243
Vanilagy @vanilagy.bsky.social · 10/09/2026
Cursed JS of the day: you can array push to objects
2431
Vanilagy @vanilagy.bsky.social · 10/09/2026
Closing in on 30 reported Chromium bugs 🫠 When will Alphabet give me stock for this?
1150
Vanilagy @vanilagy.bsky.social · 09/09/2026
Mediabunny goes great lengths to work around any and all WebCodecs bugs it encounters. Here's some new logic that works around an FFmpeg H.264 decoder bug by hacking around in the SPS bitstream. You can hit this in Chromium with the software decoding path forced.
150
Vanilagy @vanilagy.bsky.social · 08/09/2026
Mediabunny v1.56.0 is out! 🎉 It ships with huge improvements to the Conversion API, enabling near-instant media trimming via new media copying logic. Here's Mediabunny trimming a video to [60s, 120s], with no loss in quality:
1200
Vanilagy @vanilagy.bsky.social · 04/09/2026
I'm sorry, but VLC is just so buggy. Second bug I encounter today! The file I'm giving it is a Matroska file with negative SimpleBlock timestamp offsets. The spec is SUPER clear about this, it defines it as signed 16 bit. Seems VLC just doesn't care and reads it as unsigned!
000
Vanilagy @vanilagy.bsky.social · 04/09/2026
Next highly niche Mediabunny capability: HLS with negative timestamps
150
Vanilagy @vanilagy.bsky.social · 04/09/2026
VLC incorrectly displays fragmented MP4 files with an edit list that trims off its start. QuickTime and Chromium (and Mediabunny!) all display it correctly by not showing the trimmed-off media.
070
Vanilagy @vanilagy.bsky.social · 03/09/2026
In addition to npm, I distribute Mediabunny via build artifact files I attach to every release. They cover every feature and extension, and come in ESM and UMD (CJS) form, minified and unminified. More people use these files than I initially thought, which makes me happy!
000
Vanilagy @vanilagy.bsky.social · 03/09/2026
This field is SO awesome, it tells you the delay (in seconds) between producing a sound on the page and your speakers emitting that sound. Magic! It's super fun, if I log this on repeat and connect my bluetooth headphones, it jumps from 10 ms to 230 ms instantly. It's dynamic!!!
3141
Vanilagy @vanilagy.bsky.social · 02/09/2026
Mediabunny is now almost used by 2K public GitHub repos. This number has been growing super quickly over the last few weeks!
1120
Vanilagy @vanilagy.bsky.social · 02/09/2026
The impl:
080
Vanilagy @vanilagy.bsky.social · 02/09/2026
This is the craziest sine approximation I know, it's SO good for being so fast to evaluate Green is the approximation, black is real sin(x)
1101
Vanilagy @vanilagy.bsky.social · 01/09/2026
Slapping one of these in your video editor app makes it look 10x cooler even tho it's literally useless to 99% of users
051
Vanilagy @vanilagy.bsky.social · 31/08/2026
Hit a wild Chromium bug in Mediabunny today. Turns out, if you acquire a stream reader for a Blob/File, and don't complete or close it, it never gets garbage collected 💀 2 MB leakage for each reader, and since Mediabunny creates tons of them, it slowly led to memory exhaustion!
010
Vanilagy @vanilagy.bsky.social · 31/08/2026
Recently hardened the color space logic for Mediabunny. It now properly digs into the actual bitstreams of each codec to figure out the color space, even if the container file doesn't provide any metadata for it.
000
Vanilagy @vanilagy.bsky.social · 29/08/2026
soon soon
000
Vanilagy @vanilagy.bsky.social · 29/08/2026
AAAAAAHH MEDIABUNNY HAS REACHED 10M MONTHLY DOWNLOADS 😱❤️
1250
Vanilagy @vanilagy.bsky.social · 27/08/2026
This kind of audio visualization is INSANELY helpful (and lowkey required) for debugging audio rendering
010
Vanilagy @vanilagy.bsky.social · 26/08/2026
Mediabunny gets better and more stable every day. Just dropped another bug fix update!
050
Vanilagy @vanilagy.bsky.social · 26/08/2026
Angular's Zone.js, which an indirect user of Mediabunny happened to include due to a support widget they used, monkeypatches window.Promise with its own thing and completely breaks Mediabunny in the process. Literally, wtf! Contemplating if I just "won't fix" this one
390
Vanilagy @vanilagy.bsky.social · 25/08/2026
Found and reported a crazy Chromium bug today
0120
Vanilagy @vanilagy.bsky.social · 24/08/2026
him
020
Vanilagy @vanilagy.bsky.social · 24/08/2026
Oh no What am I doing in Mediabunny 👀
050
Vanilagy @vanilagy.bsky.social · 23/08/2026
GitHub doesn't know how to name buttons. All buttons should start with a verb, but here (I think) they're just saying "Merge conflicts" as a plural noun. I legit have no idea what will happen when I press this button
7241
Vanilagy @vanilagy.bsky.social · 21/08/2026
Just opened it for the first time
120
Vanilagy @vanilagy.bsky.social · 20/08/2026
PLEASE stop modeling "errors as values" in TypeScript after the "Result" enum from Rust. It is unnecessarily verbose and you're paying for an object instantiation for every value you return, everywhere, even if the error path never happens in the entire lifetime of your application.
2150
Vanilagy @vanilagy.bsky.social · 16/08/2026
This Overwatch feature is the whole reason why Mediabunny exists, lol I saw it, wanted to add it to my webgame, realized the web had no good muxer libraries, made my own, and the rest is history!
0170
Vanilagy @vanilagy.bsky.social · 15/08/2026
Full DTS audio codec support landing in Mediabunny soon!! 👀 (read/write/decode/encode/mux/demux) This codec is the primary audio codec used on Blu-ray and is quite common in the home theater / feature film domain
1140
Vanilagy @vanilagy.bsky.social · 14/08/2026
Comments on Theo's video about AI text watermarks are ridiculous. What the hell could you possibly have against AI watermarks? Is it your explicit goal to deceive people??
4102
Vanilagy @vanilagy.bsky.social · 14/08/2026
Mediabunny v1.54.0 is out!! 🚀 It can now give you detailed, accurate frame rate information about any video. Mediabunny detects the correct frame rate (including NTSC frame rates like 30/1.001 FPS) even for videos that contain dropped frames or use approximate timestamps!
0171
Vanilagy @vanilagy.bsky.social · 12/08/2026
Here's the full set of properties with definitions for those who are interested. Cursed problem, but this is the best solution for it I can think of.
040
Vanilagy @vanilagy.bsky.social · 12/08/2026
Mediabunny will offer a range of frame rate metrics. NOTE: None of the fields is called "frameRate", and that's on purpose. Each method has its tradeoffs, and I want the tradeoff to be apparent. FFmpeg made the mistake of calling their "best guess" field "real frame rate". We ain't repeating that!
2100
Vanilagy @vanilagy.bsky.social · 08/08/2026
The nicheness never stops; 40 test cases covering EMPTY media files in Mediabunny (either zero tracks, or tracks with zero media data)
0120
Vanilagy @vanilagy.bsky.social · 06/08/2026
I'm working on a full polyfill for the WebGPU API. Yes, the whole thing. It's not done yet and I will share more later, but until then, enjoy this Three.js duck demo running on the polyfill. Everything is being translated to WebGL 2 and GLSL, including the water compute shader!!
3393
Vanilagy @vanilagy.bsky.social · 03/08/2026
Uhhhhhmmm wtf It's only been 2 months since Mediabunny hit 1M/week
150
Vanilagy @vanilagy.bsky.social · 03/08/2026
Mediabunny is full of workarounds for player-specific bugs. I just added a workaround for a WebKit-specific bug where a <video>'s UI control elements would never hide if an MP4/MOV had a video track with a non-zero "alternate_group" metadata field. Super random bug; reported it!
000
Vanilagy @vanilagy.bsky.social · 01/08/2026
250
Vanilagy @vanilagy.bsky.social · 31/07/2026
Mediabunny v1.52.2 now uses bicubic interpolation and mipmaps when resizing video, and as a result, produces way better visual reuslts when downsizing!
140
Vanilagy @vanilagy.bsky.social · 30/07/2026
This type name sounds so goofy but I swear it makes perfect sense actually
050