视频大小组件的AVOptions

时间:2016-05-06 13:22:44

标签: c ffmpeg

可以选择声明视频尺寸:

av_dict_set(&options, "video_size", "1920x1080", 0);

尺寸组件是否有任何等效选项?像:

av_dict_set_int(&options, VIDEO_WIDTH_OPT_STR , 1920, 0);
av_dict_set_int(&options, VIDEO_HEIGHT_OPT_STR, 1080, 0);

这些宏(如果有的话)的值是什么?

#define VIDEO_WIDTH_OPT_STR  "?"
#define VIDEO_HEIGHT_OPT_STR "?"

请注意我知道man snprintf,这不是我关心的问题,谢谢。

1 个答案:

答案 0 :(得分:2)

你可以在字典中添加你想要的任何东西,它只是一个容器。例如,video_size被解析为两个整数,用于使用它的格式。请参阅AV_OPT_TYPE_IMAGE_SIZE中的libavutil/opt.c

您可以为班级定义自己的选项(AVOption)。因此,没有什么能阻止您添加video_widthvideo_height等两个选项,并通过字典对其进行初始化。

static const AVOption options[] = {
    { "video_width", "frame width", OFFSET(width), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, DEC },
    { "video_height", "frame height", OFFSET(height), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, DEC },
    { NULL }
};

static const AVClass some_class = {
     [...]
     .option     = options,
     [...]
}  

其中widthheight是您的格式使用的结构的成员。