我在构建使用libav的工具时遇到了一些错误。错误是关于某些结构字段被弃用的。
AVCodecContext::intra_quant_bias’ is deprecated
错误来自这段代码:
vcodec_context->intra_quant_bias
当我查看libav文档时,它只是说“使用编码器私有选项”,但我无法弄清楚如何执行此操作。
是否有人知道这意味着什么以及如何更改该行?
我在libav文档中看到我可以使用define来抑制那些警告,但我不想走这条路,我宁愿解决真正的问题。
答案 0 :(得分:0)
您可以通过针对要配置的每个选项在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);