Установка qscale программно при использовании кодера MPEG4 (для постоянного качества / VBR) - PullRequest
0 голосов
/ 14 февраля 2019

я реализовал возможность кодировать различные видео-рендеринг видеокадров с помощью кодека 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, это всегда приводит к одному и тому же размеру файла и визуально одинаковому(?) видеофайл. Я бы ожидал различия в размере и качестве файла?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...