Show HN: FFmpeg WebCLI – Full FFmpeg in Browser, Offline PWA, No Uploads(WASM) (github.com)
Built a browser-based FFmpeg editor that runs entirely client-side via WebAssembly. Your files never leave your device -- all processing happens in a Web Worker. Works offline as an installable PWA after first load.
35 comments
[ 1.9 ms ] story [ 54.6 ms ] thread> Objective metrics and tools for video encoding and source signal quality: netflix/vmaf, easyVmaf, psy-ex/metrics, ffmpeg-quality-metrics,
netflix/vmaf: https://GitHub.com/netflix/vmwaf
gdavila/easyVmaf: https://github.com/gdavila/easyVmaf
psy-ex/metrics: https://github.com/psy-ex/metrics/
slhck/ffmpeg-quality-metrics: Calculate quality metrics with FFmpeg (SSIM, PSNR, VMAF, VIF) https://github.com/slhck/ffmpeg-quality-metrics
Something like this would be great too:
The Ardour Manual > Loudness Analyzer and Normalizer: https://manual.ardour.org/mixing/basic-mixing/loudness-analy...
(Develop a development and branch coverage testing plan for)
A rust WASM GUI video encoding tool with by default just two UI wells A and B. In the "basic encoding" workflow, show in (A) the input video and audio waveform and metrics, and in (B) the output video and audio waveform and metrics. By default, if there is already an output feed, lock the video scrubbers together so that seeking seeks in both A and B in order to make comparing input signal with output encoding(s) easy.
Integrate or just reimplement e.g easyVMAF and other tools for tuning and optimizing encoding parameters. Develop the metrics report schema in YAML-LD with RDFS (and schema.org,) and store that with a filepath derived from the filename.
In an additional YAML-LD file, Store a list of encoding outputs per input video. It probably looks a lot like the output from ytdl, for example.
Given a set of encoding profiles, generate each output and enqueue each in a review queue to display in wells (A, B, [C, [D, ...]])
Like VirtualDub but in Rust with a WASM build.
[1] https://www.phoronix.com/news/FFmpeg-July-2025-AVX-512
If it’s fully client side, then you are just opening a file in essence - no clouds in sight!
My personal pain point. I teach entertainment engineering at univ. We need this. All the time. Getting IT to install this in a classroom is a pain. It has already reduced my pain regarding this (anecdotal, yes. But I see the results and am planning to do a usability study). Thought it might be useful to someone else.
Works really well. It does say "100% local. Data never leaves your browser." but indeed, a icon that does not a cloud-upload would be clearer.
Thanks for all the comments. Changed upload icon to floppy disk to make it clear that all data stays local.