如何在 C/C++ 中设置 ffmpeg qscale 进行图像编码

nec*_*ato 3 c encoding ffmpeg

我有一个使用 ffmpeg 作为后端的 C++ 工作图像编码器。我正在拍摄视频并将帧保存为 jpeg,但我无法调整输出 jpeg 的质量。
事情我已经尝试:
设置AVCodecContextglobal_qualitycompression_level领域。
我也试过qscale用一个AVDictionary选项设置,但也没有成功。

我知道这是可能的,因为使用命令行我
ffmpeg -i INPUT -q:v 2 output_frame_%02d.jpg可以获得更高质量的图像。

Gya*_*yan 5

命令行-q选项影响两件事

    enc_ctx->flags |= AV_CODEC_FLAG_QSCALE;
    enc_ctx->global_quality = FF_QP2LAMBDA * qscale;
Run Code Online (Sandbox Code Playgroud)

其中 enc_ctx 是输出流的 AVCodecContext,FF_QP2LAMBDA 是 118

  • 先生,你就是那只山羊。我找这个已经太久了。 (2认同)