Vanilagy @vanilagy.bsky.social · 29/09/2026Mediabunny 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 · 21/09/2026The 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/2026I'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/2026VLC unfortunately fails spectacularly at this task, lol 010
Vanilagy @vanilagy.bsky.social · 16/09/2026Mediabunny 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/2026The 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/2026Here'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/2026I'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/2026Closing in on 30 reported Chromium bugs 🫠 When will Alphabet give me stock for this? 1150
Vanilagy @vanilagy.bsky.social · 09/09/2026Mediabunny 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/2026Mediabunny 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/2026I'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/2026Next highly niche Mediabunny capability: HLS with negative timestamps 150
Vanilagy @vanilagy.bsky.social · 04/09/2026VLC 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/2026In 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/2026This 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/2026Mediabunny 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/2026This 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/2026Slapping 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/2026Hit 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/2026Recently 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/2026AAAAAAHH MEDIABUNNY HAS REACHED 10M MONTHLY DOWNLOADS 😱❤️ 1250
Vanilagy @vanilagy.bsky.social · 27/08/2026This kind of audio visualization is INSANELY helpful (and lowkey required) for debugging audio rendering 010
Vanilagy @vanilagy.bsky.social · 26/08/2026Mediabunny gets better and more stable every day. Just dropped another bug fix update! 050
Vanilagy @vanilagy.bsky.social · 26/08/2026Angular'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 · 23/08/2026GitHub 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 · 20/08/2026PLEASE 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/2026This 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/2026Full 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/2026Comments 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/2026Mediabunny 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/2026Here'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/2026Mediabunny 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/2026The 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/2026I'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/2026Uhhhhhmmm wtf It's only been 2 months since Mediabunny hit 1M/week 150
Vanilagy @vanilagy.bsky.social · 03/08/2026Mediabunny 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 · 31/07/2026Mediabunny 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/2026This type name sounds so goofy but I swear it makes perfect sense actually 050