c ++ - ffmpeg yadif deinterlacing

时间:2015-06-03 08:07:29

标签: c++ ffmpeg

我尝试在我的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过滤器应用到它。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

在较早的FFmpeg版本中,只有在使用了--enable-gpl configure选项时才会编译yadif。您可能需要更新到更高版本或使用--enable-gpl重新编译旧版本。