Show HN: FFmpeg Pages – because I was tired of fighting FFmpeg

55 CodeWithNeer 28 8/29/2025, 4:25:13 PM ffmpegs.pages.dev ↗
You ever just want to shrink a video… and suddenly you’re buried in flags, half-broken StackOverflow answers, and 10 tabs open just to figure out one command?

That’s been me. Every. Single. Time.

So I built FFmpeg Pages — a dead-simple collection of the commands I kept searching for. No fluff, no digging, just the stuff that actually works.

Comments (28)

LiamPowell · 3h ago
I have no issue with people sharing LLM generated tools if they actually work, even if they're 100% LLM generated and the poster has just validated that they work, but with just a quick glance I can see many issues with this that indicate you haven't tested it or even bothered to read the handful of words on the page:

- The target file size option on the compression tab just changes the bitrate without any consideration for the length of the video. This is immediately visible if you either test the command, if you're aware of what bitrate is, or if you even bother to read the LLM generated code in which there's a comment that says "Assuming 60 second video".

- The resolution options do not allow for anything other than 16:9, you can set one parameter to -1 (or -n for a multiple of n) to make it work with any aspect ratio. I can maybe see a person clumsily missing this one.

- There is no such thing as a "wav" encoder in ffmpeg. This is again immediately obvious if you test the generated commands as ffmpeg will print an error message and not produce an output file.

- Why does the command for "video compression" (which it isn't) in the FAQ not match the command generated by the tool?

LeoPanthera · 2h ago
This is dangerously oversimplified. It takes no account of source files with multiple tracks, so you'll probably end up accidentally throwing some away.

The "quality" slider implies that if you move it to the right, you'll get more quality. But higher numbers of the crf value are lower quality, not higher.

The resize function takes no account of the original aspect ratio of the source video, so you'll probably squash things.

Audio extraction ignores whatever the source codec is, missing the opportunity of extracting the source codec without recompressing. Additionally the built-in "aac" codec is very low quality and should not be used. ("libflac" is probably a better choice than "flac", too.)

gyf304 · 3h ago
Look great, a few nits:

- For the convert page, the tool seems to conflate codec and container format. For example, for MKV option, the tool specifies libx264, when MKV is capable of many more codecs. In addition, a lot of the times when people want to "convert", e.g. from MP4 to MKV, they mean to remux - i.e. "-c copy", which doesn't seem like an option here.

- For the compress page, the tool allows you to specify the target size, however the command output limits bitrate instead of target size. This means that the output size will vary depending on how long the input is, and will almost never be the specified target size.

I would suggest merge the "Convert" and "Compress" tabs, and allow specifying:

- video bitrate (-b:v)

- video codec (-c:v)

- audio bitrate (-b:a)

- audio codec (-c:a)

- container format

I found handbrake to be a good GUI-based alternative if ffmpeg commands are overwhelming.

alehlopeh · 4h ago
AI has been pretty solid with ffmpeg commands
kevmo314 · 3h ago
I wonder if it would be more productive to bake that into ffmpeg at some point.

For example, something like

> ffmpeg -llm "can you take input.mp4 and resize it to 720p, transcode to vp8 output to output.webm"

socalgal2 · 3h ago
How about just using a LLM that can execute commands

> llm -yolo "can you take input.mp4 and resize it to 720p, transcode to vp8 output to output.webm"

separate tools for separate jobs. ffmpeg doesn't need more features.

kevmo314 · 3h ago
Then people will keep building tools like this. Which, there's nothing specifically wrong with, but rather it's clear there's a demand for ffmpeg-but-more-ergonomic and ffmpeg is in the best position to do that.
scyzoryk_xyz · 1h ago
Isn't most non-linear editing software basically ffmpeg-but-more-ergonomic?
miohtama · 2h ago
You do not need to execute. Copy pasting command from a LLM answer to terminal takes less than a second.
guluarte · 3h ago
you can use shell oracle for that
dingnuts · 3h ago
then you have to ship a model with ffmpeg lol
kevmo314 · 3h ago
With the recent Whisper integration there's already precedence for a way to do that.
bsimpson · 3h ago
Working with open source software is definitely a strength of AI. Makes Nix a lot more approachable too, since just about every use of their language ever is on GitHub.
hdbdbdb · 1h ago
This site is a counter example since it is obvious AI slop generating wrong commands
dingnuts · 3h ago
was literally the first thing I found LLMs to be good at

this website would've been awesome ten years ago.. it'll make great training data now I guess

jurakovic · 3h ago
Why build "pages" with so much overhead though? Let alone with so many mistakes (as other pointed them out). It could be simple github readme or even just gist
wrs · 3h ago
I have to say, I used to have a similar cheat sheet, but Claude has totally solved this problem for me.

Way more than that, in fact... I had a bunch of 20-year-old 8mm film transfers on DV, where the scanner had put white-on-black titles between the reels. Claude wrote me a script combining ffmpeg and other tools that not only converted the format from DV to MP4, but found the interstitial titles, did OCR on them, regenerated them in full resolution, replaced the original titles with the new ones, and rendered the result as one file per reel.

omoikane · 3h ago
These pages need to take input file into account to provide better flags. Maybe what you want is a page that generates shell scripts.

+ Compress to target needs to know input length, as others have mentioned. Also, usually I would encode in multiple passes to better allocate the bits if I am targeting a specific size.

+ "Extract audio" shows commands that will reencode the audio stream. If input stream is already in a format that I can use, what I would do is to copy the audio stream without reencoding (`-c:a copy`).

gaowanliang · 3h ago
Unless the task is very simple, I rarely use FFmpeg commands. I use GUI tools like Handbrake, which can reduce my cognitive load. Commands only add to my pressure.
coisasdavida · 3h ago
Very useful! I'll bookmark that! My most recent search to use with FFMPEG was to convert a folder of Sony videos to Prores. ChatGPT helped me with this one-liner: for f in *.MTS; do ffmpeg -y -i "$f" -c:v prores_ks -profile:v 1 -vendor apl0 -pix_fmt yuv422p10le "proResLT_${f%.MTS}.mov"; done Maybe having the option to create one liners like this, for different platforms, would be nice!
cloudking · 3h ago
This is useful!

Personally I use AI-shell CLI, type "ai" and ask things like "ffmpeg convert input.mp4 to webm clip first 8 seconds" or any other shell command you need.

https://github.com/BuilderIO/ai-shell

Flux159 · 3h ago
This is helpful when I don't want to use AI.

Any chance you could add "extract clips" in addition to extract frames? Specifically I had to split a video into x-second clips recently & had to use AI to get the right command for that.

hdbdbdb · 1h ago
This is AI generated and the commands are wrong in multiple cases
haunter · 3h ago
The FAQ is basically my use case of ChatGPT. Not just for FFmpeg but pretty much every CLI tool
tombert · 3h ago
I've been using ffmpeg so long and so frequently that I have almost forgotten how opaque it is to people who aren't terminally on the computer.

This looks like it could be useful for most people.

DeepYogurt · 2h ago
Love this. Thank you much
habibur · 3h ago
Alternate,

a few batch files

for all common tasks

names starting with ffmpeg.*

and -h displays help.

guluarte · 3h ago
i use shell oracle (https://github.com/djcopley/ShellOracle), works fine most of the time

> convert this video.mp4 to webm without audio using ffmpeg

$ ffmpeg -i video.mp4 -c:v libvpx -an output.webm