audio-visualizer-python icon indicating copy to clipboard operation
audio-visualizer-python copied to clipboard

Multi-pass encoding

Open rikai opened this issue 9 years ago • 6 comments

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.

rikai avatar Sep 10 '16 05:09 rikai

Added in a PR for multiple passes, afaik anything beyond 2 is inconsequential, so I hard-coded that in for now in the #19

ardeaf avatar May 31 '17 01:05 ardeaf

We will need to rework this into the newgui branch.

dv-anomaly avatar Jun 06 '17 21:06 dv-anomaly

Yeah, should be much easier once there is an options drop-down for it that we can pull from, or whatever.

ardeaf avatar Jun 06 '17 23:06 ardeaf

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

ardeaf avatar Jun 07 '17 21:06 ardeaf

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.

tassaron avatar Jun 07 '17 22:06 tassaron

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 :)

tassaron avatar May 09 '22 06:05 tassaron