Hello HN<p>Modfy is a purely browser-based privacy-first video tool capable of performing tasks like converting, compression, etc without uploading your files.<p>I thought it would be cool to process video in the browser using Web Assembly and FFmpeg<p>The project is also open source and based on <a href="https://github.com/ffmpegwasm/ffmpeg.wasm" rel="nofollow">https://github.com/ffmpegwasm/ffmpeg.wasm</a><p>Let me know what you think!
This is a real cool tool and I would love to see more simple tools client-side only. However I have serious concerns about the performance. When developing a solver (<a href="https://ricochetrobots.kevincox.ca/" rel="nofollow">https://ricochetrobots.kevincox.ca/</a>) I found that compared to the native performance running it in WASM was ~2x slower. (Running it on a phone compared to a laptop was another ~2x). However I doubt the native compiler was using large amounts of SIMD. IIUC video encoding often will use a large amount of SIMD instructions so I would expect the slowdown to be worse.<p>On the other hand SIMD support in WASM is in progress: <a href="https://www.chromestatus.com/feature/6533147810332672" rel="nofollow">https://www.chromestatus.com/feature/6533147810332672</a> (preview available on chromium)
This is very interesting! Would definitely be useful non-technical users. I have a few UX concerns, though.<p>- By default, it's set to <i>All Features</i> instead of <i>Basic Features</i><p>- The app repeatedly says it doesn't upload your files, yet there's a big button in the app saying <i>Upload File</i>. Perhaps "Your files are never uploaded" should be reworded to something like "Your files never leave your device"?<p>- It also was not obvious how to get started with the app. Perhaps some text could be added to the play button?
This is pretty cool. I've also been playing around in this area lately and noticed there's still a drastic performance hit. But seems to work great for smaller files.<p>Question: Are you compiling FFmpeg to WASM, or FFMpeg's libav and interfacing with that directly?<p>Also for anyone curious, the author of ffmpeg.wasm[1] has an excellent guide on compiling FFmpeg to WASM:<p><a href="https://itnext.io/build-ffmpeg-webassembly-version-ffmpeg-js-part-1-preparation-ed12bf4c8fac" rel="nofollow">https://itnext.io/build-ffmpeg-webassembly-version-ffmpeg-js...</a><p>[1] <a href="https://github.com/ffmpegwasm/ffmpeg.wasm" rel="nofollow">https://github.com/ffmpegwasm/ffmpeg.wasm</a>
On the left side, the label says "Click or Drag to upload", and at the bottom there is a label saying "Your files are not uploaded anywhere".<p>If you have control over the left file picker, it might make sense to change the label to "Click or Drag to pick a video" or similar.<p>Really great to see this -- I once worked on a cloud-based video editor and the cost of running ffmpeg in the cloud was surprisingly prohibitive.
I tried running something like this on my own, but I got OOM errors pretty quickly. 4 gigs isn't a lot when it comes to video processing. Hopefully wasm64 and WebGPU will make it a lot better.