avfilter前面的初始化都没问题,结果在avfilter_graph_config就崩溃了。
找了好久,最终排查到了av_opt_set_int_list 设置buffersink_ctx的pix_fmt有问题,虽然在这里是没报错的
我在里面是这样写的
enum AVPixelFormat pix_fmts=AV_PIX_FMT_YUV420P;
av_opt_set_int_list(buffersink_ctx, "pix_fmts", &pix_fmts,AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN);
而网上例子是传一个AVPixelFormat 数组的,后面改成了
enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_YUV420P,AV_PIX_FMT_NONE };
av_opt_set_int_list(buffersink_ctx, "pix_fmts", pix_fmts,AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN);
结果还是会崩溃,但是gdb断点错误的地方跟之前不一样了
最后结论是传入的pix_fmt是不对的格式,应该是CUDA格式
enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_CUDA,AV_PIX_FMT_NONE };
av_opt_set_int_list(buffersink_ctx, "pix_fmts", pix_fmts,AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN);
问题解决!