我有一个使用 ffmpeg 作为后端的 C++ 工作图像编码器。我正在拍摄视频并将帧保存为 jpeg,但我无法调整输出 jpeg 的质量。
事情我已经尝试:
设置AVCodecContext的global_quality和compression_level领域。
我也试过qscale用一个AVDictionary选项设置,但也没有成功。
我知道这是可能的,因为使用命令行我
ffmpeg -i INPUT -q:v 2 output_frame_%02d.jpg可以获得更高质量的图像。
命令行-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