alt.hn

6/4/2026 at 8:32:18 PM

Show HN: FFmpeg WebCLI – Full FFmpeg in Browser, Offline PWA, No Uploads(WASM)

https://github.com/tejaswigowda/ffmpeg-webCLI

by tejaswigowda

6/4/2026 at 9:20:22 PM

Just a thought - is the text “Click to upload” with a cloud icon perhaps a bit misleading?

If it’s fully client side, then you are just opening a file in essence - no clouds in sight!

by senshi001

6/4/2026 at 11:29:09 PM

Yeah, if the author sees this, it would be best to change this to "Click to Open". We can argue about the icon (I would say the floppy image), but seeing the word "upload" with a cloud icon 1000% means "send this up to the Internet."

by hdb2

6/4/2026 at 9:34:53 PM

I agree something like a folder or file icon would be more accurate.

by pooploop64

6/4/2026 at 10:30:48 PM

I guess UI-wise some changes wouldn't be bad, but I am just glad it works. I am currently converting an ancient .mpg into a .mp4; I could do so via ffmpeg from the commandline, but I always forget which options to use, so a GUI kind of frees brain space here.

by shevy-java

6/5/2026 at 12:01:05 AM

this might be an extremely stupid question, but is this just a demo project of https://github.com/ffmpegwasm/ffmpeg.wasm? or is this bringing forth some other utility that im not seeing?

by arpadav

6/5/2026 at 5:59:09 PM

[dead]

by tejaswigowda

6/4/2026 at 10:19:04 PM

vibe-coded, and the github repo does not even contain the sources, just a single 'server.js' that is only for the documentation

by majorchord

6/4/2026 at 11:56:27 PM

Yup the readme reeks of llm generated fluff. Lately I find myself getting more and more suspicious whenever I see lots of emojis in markdown headers..

by fastily

6/5/2026 at 6:26:18 PM

Fair. The emojis are a style choice -- I find them useful as visual anchors when scanning a long feature list. The code is in docs/ either way.

by tejaswigowda

6/4/2026 at 11:54:02 PM

It looks like most of the sources might be under the “docs” subfolder.

by rmast

6/5/2026 at 6:24:22 PM

[flagged]

by tejaswigowda

6/4/2026 at 11:18:06 PM

Just look at the descriptive commit messages. /s

Tells you that most here just read the headline and not the code or commits any-more and this will just become abandonware.

by rvz

6/5/2026 at 9:20:19 PM

Active development -- PR just came in from luispa. Happy to review contributions.

by tejaswigowda

6/4/2026 at 9:27:03 PM

Nice interface at a first glance, for sure can be useful for users who would find using the actual thing too cumbersome. How does performance compare to the native app? Is any form of hardware decoding/encoding like h264_nvenc available? (I guess not?)

by ale42

6/5/2026 at 6:27:40 PM

~4x slower than native for encoding, which is acceptable for clips under 5 mins. No hardware encoding -- WASM is CPU-bound, for now. WebCodecs could bridge that gap in future.

by tejaswigowda

6/4/2026 at 9:33:55 PM

I would imagine the only way to use NVENC directly from a browser would be via WebCodecs.

by dtf

6/4/2026 at 8:55:25 PM

Any chance those AVX-512 optimizations they released a while ago work within this? [1]

[1] https://www.phoronix.com/news/FFmpeg-July-2025-AVX-512

by jamal-kumar

6/4/2026 at 9:20:57 PM

I think WASM SIMD is only 128-bit wide.

by dtf

6/5/2026 at 9:22:10 PM

WASM SIMD is 128-bit wide as dtf noted, so AVX-512 won't apply here. Longer term, WebGPU could be a more interesting path for compute acceleration in the browser than SIMD widening.

by tejaswigowda

6/4/2026 at 9:30:21 PM

Note those only apply to scene_sad which is used for scene change detection and freeze detection and a few other things like mpdecimate -- it's a very specific use case

by adzm

6/5/2026 at 12:17:45 AM

In 2016 I was working for an organization that wanted a video streaming web app, but could not tolerate any latency. In the past, we solved this with an NAPI extension in Firefox. They removed this for good security reasons, but it left our users without an option. They would have to move to an electron app. Distributing this app and updating it across 1000s of terminals worldwide was not something we were set up to do. I hacked together something like this and could not believe how well it worked. The initial POC is here: https://github.com/colek42/streamingDemo.

by colek42

6/5/2026 at 5:58:03 PM

Thank you. This works entirely offline. I work in a univ setting where I cannot easily install software for classes. This can be used as a regular app once installed as a PWA. Even the ffmppeg lib is cached. Once installed it looks like any other app, with dock icon etc.

by tejaswigowda

6/5/2026 at 5:53:50 PM

Go here for live demo: https://tejaswigowda.com/ffmpeg-webCLI/

Thanks for all the comments. Changed upload icon to floppy disk to make it clear that all data stays local.

by tejaswigowda

6/5/2026 at 9:21:20 AM

Note that this is the webpage: https://tejaswigowda.com/ffmpeg-webCLI

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.

by pepa65

6/5/2026 at 5:51:39 PM

Thank you. Switched it to a floppy disk!

by tejaswigowda

6/4/2026 at 11:28:03 PM

I love this, be interesting if this could make an in-browser video editor

by bxclltkfz

6/5/2026 at 6:26:58 PM

It already does -- trim, crop, concatenate, picture-in-picture, side-by-side, subtitle embedding. What would you add? Let's make it happen.

by tejaswigowda

6/4/2026 at 11:40:44 PM

I find it fascinating that we keep trying to build things that already exist, but on top of another app (web browser). I mean, it's cool to see, and it will have its use-cases, but I wonder where we'd be if we didn't have to do this.

by mdswanson

6/5/2026 at 6:20:04 PM

The browser-as-runtime has one property nothing else has: zero install on every OS. For sensitive files for medical, legal, personal. It's also the only architecture where you can verifiably prove data never left the device.

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.

by tejaswigowda

6/5/2026 at 4:41:37 PM

this is cool. was thinking for this long time. someone shows up

by harshit119

6/4/2026 at 10:17:06 PM

this is ffmpeg running inside the browser am I correct? did not know this was possible. wonder what else we can run via webassembly

by zuzululu

6/4/2026 at 11:59:40 PM

The things that are harder to get running in a browser via webassembly tend to have a GUI, network communication, or system calls that browsers don’t provide the APIs that are needed to support. But I’ve seen workarounds using websocket proxy servers to get around the lack of raw TCP or UDP socket access.

I’ve been surprised how easy it can be to get Python and C# code running in a browser.

by rmast

6/5/2026 at 6:15:07 PM

Whisper.cpp for local speech transcription and WebLLM for in-browser LLM inference follow the same pattern. We're calling this the Web-CLI architecture. A paper is in progress.

by tejaswigowda

6/4/2026 at 11:20:40 PM

FFmpeg is so useful for TTS

by theturtletalks

6/5/2026 at 9:22:42 PM

Absolutely. Audio extraction, format conversion, loudness normalization are all there. If you have a specific TTS pipeline in mind the raw FFmpeg mode should handle most of it.

by tejaswigowda

6/5/2026 at 4:09:47 PM

Very cool.

by sivapa

6/5/2026 at 10:58:43 AM

fantastic. It really works great!

by anoop4bhat

6/4/2026 at 10:29:39 PM

Interesting idea - must have been a lot of work to add all those features. I just tried it and it works locally too, which is pretty epic.

by shevy-java

6/5/2026 at 5:52:11 PM

Thank you!

by tejaswigowda

6/4/2026 at 8:46:33 PM

From https://news.ycombinator.com/item?id=44717303 :

> 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...

by westurner

6/5/2026 at 6:16:01 PM

This is a great addition! You can use the raw ffmpeg mode to do this currently if you know the flag syntax

by tejaswigowda

6/4/2026 at 10:15:54 PM

This is dope. Made a PR.

by luispa

6/5/2026 at 9:19:27 PM

Thank you! Reviewed and merged!

by tejaswigowda

6/6/2026 at 2:33:44 PM

[dead]

by mathisdev7

6/4/2026 at 9:23:59 PM

[flagged]

by aleksandre_dev

6/4/2026 at 10:09:37 PM

[dead]

by thomas_viaelo