5 ms·
As a developer it's rare to see something which leaves me feeling "how would you even build something like that..." but this is one of those. Huge cudos for eve
by bluelightning2k 2y ago
As a developer it's rare to see something which leaves me feeling "how would you even build something like that..." but this is one of those. Huge cudos for even attempting and following through with something like this!
- suyash 2y agoYou start by building your knowledge around computer graphics and modern web development, basically WebGL and modern web APIs have made doing sophisticated graphic applications on the browser. Only limitation right now I see is single threaded limitation on the browser.
- ptsd_dalmatian 2y agoWhat about workers? Isn’t it basically the same as offloading computation heavy work to separate thread? Also, we have WebAssembly. Afaik, js threads can now share memory using SharedArrayBuffers. So I don’t think we have this single thread limitation anymore :)
- noduerme 2y agoIdk about this specific app, but the main problem with workers is that any data their working on needs to be copied in or side-loaded into them once they spin up. I imagine for huge video files, having each worker load up a separate copy could be a bottleneck.
- LoganDark 2y ago> the main problem with workers is that any data their working on needs to be copied in or side-loaded into them once they spin up Isn't this no longer an issue thanks to SharedArrayBuffer? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... I believe the ONNX Runtime uses this for multithreading on the web, see https://github.com/nagadomi/nunif/issues/34 https://github.com/nagadomi/nunif/issues/34
- noduerme 2y agoOoh. Interesting. I wrote my last worker-based app a couple years ago for chunking and crunching some large datasets. I'll have to give this a go one weekend.
- clementpiki 2y agoIndeed, Pikimov is using SharedArrayBuffers to decode video frames outside of the main thread
- mclightning 2y agoyou follow HN, and some guy posts a video editing js library, another guy builds an app taking that library further, you get inspired and build something even bigger.
- deleted 2y ago[deleted]
- earthtograndma 2y agoI notice it's written in Ember, which is billed as the framework for ambitious web developers -- in this case, it definitely checks out.
- nullvoxpopuli 2y agoYAAAAAS ember is so good
- swyx 2y agoyeah i'm gonna need a TLDR of the major moving parts. how do you even do video editing in the browser? is there a "ffmpeg in the browser"? is that the basic building block?
- rizky05 2y agoActually it is: https://github.com/ffmpegwasm/ffmpeg.wasm https://github.com/ffmpegwasm/ffmpeg.wasm, but for this particular project it seems using mp4box from gpac
- pilaf 2y ago> is there a "ffmpeg in the browser"? I don't know if this project uses it, but there's ffmpeg.wasm [1]. 1: https://github.com/ffmpegwasm/ffmpeg.wasm https://github.com/ffmpegwasm/ffmpeg.wasm
- padenot 2y agoWe've been working on the Web Codecs API for a few years now. It only handles encoding and decoding media codecs, ffmpeg does much more (container handling, filters and everything needed really). Web Codecs can take a compressed media packet and get you the decoded image or audio buffer it corresponds to. Conversely it can take audio or images with timestamps and get you a series of encoded media packets you can then containerize (we say mux) and get you e.g. an mp4 file. https://w3c.github.io/webcodecs/ https://w3c.github.io/webcodecs/
- xfalcox 2y agoCan I just say that I was disappointed by the Web Codecs API leaving muxing the end result as a "draw the rest of the fucking owl" thing.