我正在尝试在我的C++程序中使用ffmpeg对视频进行隔行扫描。
首先,我使用了avpicture_deinterlace
,但已弃用。
寻找更多信息,我在avfilter_get_by_name("yadif")
之后尝试了avfilter_register_all()
,但始终返回NULL
。我也尝试了下一个代码,但仍然无法正常工作。我在avfilter_init_str
函数中尝试了不同的参数,但err
始终小于0,这意味着存在错误。
int err;
// Register all built-in filters
avfilter_register_all();
// Find the yadif filter
AVFilter *yadif_filter = avfilter_get_by_name("buffer");
AVFilterContext *filter_ctx;
// Create the filter context with yadif filter
avfilter_open(&filter_ctx, yadif_filter, NULL);
// Init the yadif context with "1:-1" option
err = avfilter_init_str(filter_ctx, "\"yadif=1:-1\"");
我知道
filtering_video.c
文件是了解如何构建过滤器的一个很好的起点,但是我不想构建一个过滤器,我只需要使用yadif去隔行过滤器即可。我有AVFrame
,但是我不知道如何对它应用de yadif过滤器。任何帮助都可以欢迎。
最佳答案
在较早的FFmpeg版本中,仅在使用--enable-gpl configure选项时才编译yadif。您可能需要更新至更高版本或使用--enable-gpl重新编译旧版本。