At least some of your requirements are directly implemented in Handbrake, e.g., there are different transcoding presets [0] and burning in subs [1]. It uses ffmpeg under the hood as well.
Not op, but I did use Handbrake multiple times, and thinking of just going back to cli ffmpeg. I wanted to see the exact incantation of ffmpeg that Handbrake issues to more easily switch, but from what I saw it doesn't fork into an ffmpeg process but probably uses the library, and it's hard to tell what the exact params are.
My problem with Handbrake was that it wasn't correctly copying creation datetime/makernotes/camera info into the new video and I had to manually later on issue bunch of ffmpeg commands for copying stream metadata, at which point I might as well do the whole conversion directly in ffmpeg.
The thing is depend what you are trying to do. To compress DVD/Blurays, I find handbrake invaluable, because it will automatically deal all kind of weird corner cases in term of pixel format, image ratio, cropping, deinterlacing, etc, that I don't have to write in a command line on every new file (and every disk seems to be doing something different).
But if you are dealing with repeatable, consistent file format (like files coming from the same camera), you are way better off going the command line route, and chances are the command will be pretty simple.
My main gripe with Handbrake is how annoying it is to trim a video. There's no preview of when the trim happens. And for some unknown reason it defaults to a chapter range rather than seconds or frames for trimming...
Yes. I ended up abandoning handbrake for a lot of reasons. For a long time its libraries were horrifically out of date (it was many many major versions behind the x265 trunk) and I don't feel like its "presets"/"batch mode" works properly. I always felt like I was second-guessing whether my manual settings were getting overridden and replaced by presets when inserting a batch.
I could have dived into the log files and looked more closely at what it was doing but, eh, I'm at the level where I just want a batch script where I can see exactly what it's doing upfront. If I want batching/task management that is more advanced than a batchfile can do I'll set up SLURM workload manager.
At least some of your requirements are directly implemented in Handbrake, e.g., there are different transcoding presets [0] and burning in subs [1]. It uses ffmpeg under the hood as well.
[0] https://handbrake.fr/docs/en/1.5.0/technical/official-preset... [1] https://handbrake.fr/docs/en/1.5.0/advanced/subtitles.html