Multi-pass encoding
I took a swing at implementing this myself already, but it was more difficult than i anticipated.
The ability to do multi-pass encoding would help to improve the quality:filesize ratio, though.
Added in a PR for multiple passes, afaik anything beyond 2 is inconsequential, so I hard-coded that in for now in the #19
We will need to rework this into the newgui branch.
Yeah, should be much easier once there is an options drop-down for it that we can pull from, or whatever.
Quite new to ffmpeg myself and encoding in general, but can someone confirm/clarify something for me:
By default, when you encode in x264, ffmpeg uses a crf with a factor of 23 or so.
Once you specify what bitrate you want, you can do multi-pass encoding.
In that case for our new GUI we would need to incorporate a radio button to switch between those two options as they are incompatible with each other. Or a separate "bitrate"/"quality" tab where we can specify the various options for CRF and Multi-pass encoding, like:
Setting for both: Preset: Ultra fast to very slow, determines compression, default = medium
CRF: Value: 0-51 quality, 0 is lossless, 51 is the worst. default = 23
Multi-pass: Number of passes Bitrate for each pass
Perhaps we should separate the encoder settings widget into its own file with a separate ui file, so it's easier to manage this complexity as more settings are added.
I separated 1 encoder pass into its own method, and tried adding a 2-pass encoding option based on @ardeaf's pull request #19
Branch here: https://github.com/djfun/audio-visualizer-python/tree/feat-2-pass-encoding Note: the 2-pass encoding breaks if using Video, Spectrum, or Waveform components. That would be easy to fix later.
It seems to work at some video bitrates (1200 with my test audio) and will produce slightly different videos, but I don't really know how to tell if I'm doing it right nor how to tell which bitrates would actually work. We have to detect that ahead-of-time.
If anyone still wants this feature, please let me know :)