Being cheeky of course here. FFmpeg is great. An AI assistant was what I needed to execute my ~12 FFmpeg commands per year though, with ease and speed.
Being cheeky of course here. FFmpeg is great. An AI assistant was what I needed to execute my ~12 FFmpeg commands per year though, with ease and speed.
I mean I've only done it once with ffmpeg but it felt so good
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best"
Not sure if there is a better way, ideally I would just like it to always default to that. --restrict-filenames
--output '%(title)s.%(ext)s'
--ignore-errors
--embed-subs
--all-subs
--sub-langs all,-live_chat
--compat-options no-live-chat
--convert-subs srt
--format 'vcodec=av01/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'
--convert-thumbnails jpg
--embed-thumbnail
--audio-quality 0
--add-metadata
--xattrs
--xattr-set-filesize
--prefer-free-formats
--geo-bypass
--no-mark-watched
--console-title
--no-warnings
--sponsorblock-remove all
--compat-options embed-thumbnail-atomicparsley
You can look them up on the README. It's quite a bit of work, granted, but to me it was very worth it.yt-dlp really is a great tool too, I do hope it keeps working for a long time
> prefer-free-formats
Are you entirely sure you know what you are doing?
--format 'vcodec=av01/bestvideo*+bestaudio/best'
And it started downloading `.webm` streams and not `.mp4` (only one video had an AV1 stream). Tested with several videos, quality is the same and some files are actually 40% smaller....Whoa. Thanks for making me double-check!
Somebody down-voted you, I seem to recall seeing earlier, sorry about that. Your comment was valuable, though I'd definitely use more productive tone next time.
And finally, after some more tests it turned out that some videos have almost 2x bigger .webm variants than .mp4 so I had to extend my yt-dlp config like so (only showing the prioritization options here, my previous full config is still there upthread):
--format 'vcodec=av01/bestvideo*+bestaudio/best'
--format-sort 'quality,res,fps,hdr:12,vcodec:av01,channels,acodec,abr,asr,proto,ext,hasaud,source,id'
--prefer-free-formats
This:1. Prioritizes AV1 (because it's gaining more and more hardware support, is very efficient and is not license-encumbered)
2. Prefers the free formats
3. ...but still uses a non-free format if it's smaller.
Or at least that's what I believed in after testing on 7 videos that have obvious winners either way.
1. ffmpeg exposes all of its options through the CLI, and there are a lot of options. So it's probably always going to be completely undiscoverable. It really needs a GUI to be usable, but that's a project in itself (I guess the project is Handbrake).
2. They probably didn't put a lot of work into the UX of the CLI since it's an open source project.
3. Backwards compatibility.
I don't buy this. A TUI is completely possible, e.g. LazyGit, Htop, etc, countless tools indicate you can get pane-based UIs going in the terminal; the FFmpeg team has simply never made such a thing a priority.
But even without a TUI, the most basic use-cases are well-known after over 15+ years of existence, simple prompt-based wizards, i.e. "git add -p", should be offered; again, a matter of priority rather than being intractable.
A year ago or so someone posted a subscription service they made for composing the pipeline graph visually
Sure. A TUI is basically a poor man's GUI.
> simple prompt-based wizards, i.e. "git add -p", should be offered
I agree. Wouldn't be hard. I think you may as well use Handbrake though.