Show HN: WTFfmpeg – Natural Language to FFmpeg Translator
49 comments
·July 23, 2025Ameo
0points
> This whole repo is a single 300 LoC Python file over half of which is the system prompt and comments.
You accurately described many "AI apps" of this era.
N_Lens
At this rate one could probably automate the low effort project -> HN post pipeline
jagged-chisel
Hmm … {thinking face emoji}
{money-mouth face emoji}
wolletd
Using yet another LLM to generate the project code!
Sesse__
At some point, one would imagine just making a less confusing FFmpeg CLI would be a better use of everyone's time. (I've sort-of understood it now, but the learning curve is pretty steep.)
null
Liquix
that's akin to making a "less confusing git" - the reason ffmpeg/git are so widely used is largely due to how powerful and fine-tunable they are. the learning curve is an unfortunate but necessary side effect
IshKebab
You could make both git and ffmpeg much less confusing without sacrificing their power and tunability.
robertpohl
No one is stopping you from creating a Nobel Prize winning ffmpeg wrapper yourself to show how its done ;)
larodi
I bet it is very often that people upvote based on the title and perhaps comments, not the actual content or its utility. Besides, this karma business can really get one hooked as a sucker for the high grade…
do_not_redeem
It was vibe coded too, the doc comments and pokemon try-catch are dead giveaways. It's a slop wrapper around a slop generator to farm github stars. Welcome to the future.
xhrpost
> pokemon try-catch
I've seen LLM's do this in other languages as well but didn't realize there was a term for it. Wrapping entire function bodies in try/catch, at the very least please just wrap the caller so you don't have to indent the entire body for no reason. Not to mention a lot of commands inside can't even throw.
alfg
In case anyone is looking for a FFmpeg command builder that's not ai-generated:
https://github.com/alfg/ffmpeg-commander
Haven't updated in a while, but it's a simplified web UI with a few example presets.
HelloUsername
Doesn't all the web-related ffmpeg stuff boil down to https://ffmpegwasm.netlify.app ?
Edit: no, unrelated. Got confused with https://ffmpeg.app .
vrighter
You aren't doing anything related to ffmpeg at all. The only thing "related" to ffmpeg is the system prompt, which anyone could just paste into their chat window. Please stop posting low effort content like this.
pknerd
Superb. I always refer GPT to learn about what I need to do with ffmpeg. Glad to see someone made an AI wrapper out of it.
PS: Yeah, ffmpeg is not an easy tool to use.
huimang
Why is it so hard to read the manual or even a cheatsheet? Many people use ffmpeg, it's not like there's a dearth of information out there...
crispyambulance
I am sure there exist people who live and breath media/codecs and they're reasonably fluent at getting ffmpeg to do what they want because of a tremendous amount of practice.
But for the vast majority of folks who only occasionally use ffmpeg to do something, the complexity of it is so outrageous it feels like a parody. Literally (I mean literally) THOUSANDS of options/flags. It's just too much for a human to navigate. Of course we're going to "cheat" or just google up something similar to what we want. If an LLM can handle it, even better.
0points
I sympathise with the overwhelming sensation of the ffmpeg command line arguments.
But the more you familiarize yourself with a/v streaming and transcoding, you soon realize why you need such amount of control.
I mean, with ffmpeg I can easily combine 3 audio clips, 5 subtitles and a separate video, cut away first 25 seconds and the last 5 minutes of the resulting clip, resize it and change the aspect ratio, reduce audio to mono and specify output codecs for audio and video.
And this is still a pretty simple example of what one could want to do.
Ffmpeg has countless other amazing features, demanding more arguments.
How about for example camera stabilization? (-vf deshake)
How would one even start to explain all of this to an app without thousands of command line arguments?
The whole subject is incredibly complex and ffmpeg is by far the most amazing project in this space.
Without ffmpeg, there would be no youtube in 2005, no plex at all and really the whole of modern social web would probably have happened later if not Fabrice was such a fantastic guy :-)
null
kookamamie
> --- Generated ffmpeg Command --- > ffmpeg -i my_video.avi -an -c:v libx264 my_video.mp4
The example itself shows a naive conversion, ending up transcoding to default h.264 params. This should have been -c:v copy for copying the input packets, as-is.
0points
No, -c:v copy would copy the video stream from the input .avi (which could be DivX or some other obscure codec for all we know).
I know this from RFTM. I don't ask LLM to second guess me.
kimi
Instead of LLM, Python and whatnot, it could have been a cheatsheet: https://github.com/scottvr/wtffmpeg/blob/12767e7843b9fd481ba...
savolai
It would be helpful if this printed out the relevant sections from the ’man’ page of the command line options it suggests using, or told the user this option is undocumented in the man page.
This way user could directly review if it is suggesting something they want to go on with.
ghostly_s
A rough estimate of the disk space required for the model + all other dependencies would be helpful in assessing this tool's utility. It looks like the recommended model alone is 2.4Gb?
adithyassekhar
Seems tiny for it to understand natural language, technical terms and their meanings (deinterlacing, pulldown..) and the ffmpeg commands related to it. Assuming it works.
NoboruWataya
But also absolutely massive for a tool that tells you how to use another, considerably smaller tool. A cheat sheet would be a few kb.
MrFurious
If you don't want learn ffmpeg syntax, is better use a visual gui how handbrake that a frontend for a fatty LLM.
yawnxyz
fwiw I've been dealing with a lot of ffmpeg lately and it's like the most obtuse API I've ever used, and I'm now using Warp for it, and it works amazingly every time
ycombiredd
OP here.. I guess nobody got the joke. The last paragraph of the readme flat out says it was intended as amusing performance art.. Ludicrous is as ludicrous does.
x______________
>Disclaimer This was largely made to amuse myself; consider it a piece of humorous performance art but it so borders on being actually useful, I went to the trouble to document all of this. YMMV. Use at your own risk. The author is not responsible for any damage or data loss that may occur from using this tool. Always review generated commands before executing them, especially when working with important files.
I'm on the fence on this one as the HN community thrives on novel interesting and sometimes humorous content, yet you got the ire of most.Burying the line about it being a useful yet parody of a project at the very end helps no one understand as exactly for that point, this was sold as the latest and greatest, oh disclaimer, it really isn't.
Don't stop the work, but please remember to keep you intentions clear and your audience will understand.
Best of luck on your future projects!
Edit: Typo
This has to be at least the fifth LLMpeg I've seen posted to hacker news in the past few months.
This whole repo is a single 300 LoC Python file over half of which is the system prompt and comments. It's not even a fine-tuned model or something, it's literally just a wrapper around llama-cpp with a very basic prompt tacked on.
I'm sure it's potentially useful and maybe even works, but I'm really sick of seeing these extremely low-effort projects posted and upvoted over and over.