我在构建一个使用libav的工具时出现了一些错误。这些错误是关于一些结构体字段被废弃的问题。
AVCodecContext::intra_quant_bias’ is deprecated
错误来自于这段代码。
vcodec_context->intra_quant_bias
当我查看libav文档时,它只是说 "使用编码器的私有选项来代替", 但我不知道该怎么做。
有谁知道这句话是什么意思,如何修改这一行?
我在libav文档中看到,我可以使用定义来抑制这些警告,但我不想走这条路,我宁愿解决真正的问题。
你可以通过调用 av_opt_set
(根据您的数据类型)在 vcodec_context
为您要配置的每个选项。
这里的例子 (video_codec_ctx
作为 AVCodecContext*
):
av_opt_set(video_codec_ctx->priv_data, "preset", "ultrafast", 0);
av_opt_set(video_codec_ctx->priv_data, "tune", "zerolatency", 0);
av_opt_set_int(video_codec_ctx->priv_data, "crf", 27, 0); // For integer values
av_opt_set_int(video_codec_ctx->priv_data, "bufsize", 100, 0);
av_opt_set_int(video_codec_ctx->priv_data, "keyint", fps, 0);
av_opt_set_int(video_codec_ctx->priv_data, "keyint_max", fps, 0);
av_opt_set_int(video_codec_ctx->priv_data, "g", 1, 0);
也可以调用 av_dict_set
关于 AVDictionary*
并让这些选项在你分配给 AVCodecContext
呼叫 avcodec_open2
:
AVDictionary* dict = NULL;
av_dict_set(&dict, "strict", "+experimental", 0);
avcodec_open2(video_codec_ctx, video_codec, &dict);