ffmpeg - 访问AVCodecContext

时间:2018-04-09 02:49:44

标签: c++ ffmpeg 64-bit avcodec

我想在我的程序中访问AVCodecContext *av_ctx的某些成员。我在32位版本中编译时很好,但是当我将其更改为64位时,这些元素就像它们被移动一样。

例如,我想获得av_ctx->coded_widthav_ctx->coded_height(有时它们与av_ctx->widthav_ctx->height不同)并将其存储在一些变数。现在,当我在32位版本中调试此程序时,它没问题,但在64位版本中,这个值是错误的,当我检查我的结构时,我可以看到接下来的两个元素(av_ctx->gop_sizeav_ctx->pix_fmt)有我想要的价值。

我在AVCodecContext上检查了avcodec.h声明,并且(在结构声明中的评论中)说:

  

请使用AVOptions(av_opt * / av_set / get *())从用户应用程序访问这些字段。

我认为这可能是获取这些元素的正确方法,但我不知道这是什么 AVOptions ,我搜索了它但却无法找到它的确切内容我该怎么用呢。

1 个答案:

答案 0 :(得分:0)

int64_t cheight = 0; 
av_opt_set_int(av_ctx,"coded_height", 400, 0); 
av_opt_get_int(av_ctx,"coded_height", 0, &cheight);

也许你可以试试这个。