My personal method is to type "ffmpeg" and then hit Ctrl+R repeatedly until I make it to the last time I used it to do what I want to do again now, and then adapt the command from history to my current needs.
It's not very efficient, but I don't feel it needs to be, and it requires no particular setup (except setting Bash to keep history forever but that's something useful I would do anyway for other use cases).
I've found this is much more efficient if I add a comment at the end of the command describing what it does, then my C-r search can find that description, rather than just, say, any command in invoking some particular executable.
Why not do `history | grep ffmpeg`? Each line will be prefixed with its place in the history ("445 ffmpeg --whatever") and you can just press `!445` to run it.
Ah, yes. This served me fairly well for some time. However, I also needed to remember the actual tool I used for the job. Was it ffmpeg? ffprobe? gifsicle? was it ImageMagick's convert? Not too bad if these are the only tools, but I also use pandoc, BluetoothConnector, pdftotext, qpdf, multiple AppleScripts, qrencode, system_profiler, fb-rotate, duti, sips, git... Bash history also remembers failed attempts, so I need to filter those out as I recall the successful one...
Wrapping the winning command with a memorable function makes it a bit easier for me to recall the right incantation via fuzzy searching. For example: "set default" (resolves to dwim-shell-commands-macos-set-default-app) vs "duti" (which I can never remember).
Amen to that, I use almost nothing else these days except for when I have a new bespoke command I've never typed before. Even then fzf helps since I rarely am typing something COMPLETELY new.
Essentially, you just mark the code blocks with `:script name`, and then can list or execute the block from a terminal. This also keeps the script in context within whatever other notes you had on the topic, when you were figuring it out etc. And if something turns out to be a useful snippet, you move it out to an actually separate script. :)
I use Typinator expansions with the input video path (from the clipboard) as a variable to perform common ffmpeg operations, such as downsize, speed up, extract audio, strip audio, export frames to create GIF animations, or encoding as MP4.
Typinator lets you use what's on the clipboard but also add scripting (say, Python or JavaScript) when certain parameters need to be calculated, like sizes or names.
It's not very efficient, but I don't feel it needs to be, and it requires no particular setup (except setting Bash to keep history forever but that's something useful I would do anyway for other use cases).