я реализовал возможность кодировать различные видео-рендеринг видеокадров с помощью кодека MPEG4 и создавать видеофайл .mp4.Это отлично работает.Теперь я хочу добавить возможность определения ползунка качества (0-100%) для параметризации фактора постоянного качества (VBR).Я не знаю, как это сделать.
Я обнаружил, что -qscale, кажется, делает то, что я хочу, поэтому я посмотрел в ffmpeg_opt.c, что там происходит, и попытался сделать то же самое:
config.codecContext->flags |= AV_CODEC_FLAG_QSCALE;
config.codecContext->global_quality = FF_QP2LAMBDA * QualityLvl;
с:
- «config.codecContext», являющийся контекстом кода
- «FF_QP2LAMBDA», равный 118
- «QualityLvl» - это «коэффициент для постоянного качества» (должен быть int между 1 и31 в соответствии с этим: https://trac.ffmpeg.org/wiki/Encode/MPEG-4)
Проблема в том, что на самом деле не имеет значения, если «QualityLvl» равно 1,2 или 30, это всегда приводит к одному и тому же размеру файла и визуально одинаковому(?) видеофайл. Я бы ожидал различия в размере и качестве файла?!