C++ 带有aecho的FFmpeg过滤器配置无法配置所有链接和格式-avfilter\u graph\u配置

C++ 带有aecho的FFmpeg过滤器配置无法配置所有链接和格式-avfilter\u graph\u配置,c++,ffmpeg,android-ffmpeg,C++,Ffmpeg,Android Ffmpeg,我正在按照FFMpeg的官方教程创建一个过滤器链。本教程演示了如何通过链传递数据,如下所示: 它使用的过滤链是:*(输入)->abuffer->volume-> a格式->abuffersink->(输出) 这是我的代码-对不起锅炉代码,这只是一种方式:( 到 然后拆下了线 av_opt_set (choisen_beat_fx_ctx, "volume", AV_STRINGIFY(0.5), AV_OPT_SEARCH_CHILDREN); 直到最后一行,

我正在按照FFMpeg的官方教程创建一个过滤器链。本教程演示了如何通过链传递数据,如下所示:

它使用的过滤链是:*(输入)->abuffer->volume-> a格式->abuffersink->(输出)

这是我的代码-对不起锅炉代码,这只是一种方式:(

然后拆下了线

av_opt_set    (choisen_beat_fx_ctx, "volume",     AV_STRINGIFY(0.5), AV_OPT_SEARCH_CHILDREN);
直到最后一行,一切都很顺利。
avfilter\u graph\u config
失败并返回负值。函数文档:

avfilter_graph_config:检查有效性并配置所有链接和 图形中的格式


因此,我想我需要额外的链接才能将aecho插入到我的链中?我如何才能将aecho插入到我的筛选链中?

好的,问题是,我需要使用
aresample
筛选进行编译,才能使其工作。我重新编译,现在它神奇地工作了

以下是我如何发现问题的。创建常规日志回调:

void ffmpegErrorCallback(void *ptr, int level, const char *fmt, va_list vargs) {
    LOGE("ffmpegErrorCallback Error Occurred! Err: %s", fmt);
}

av_log_set_level(AV_LOG_ERROR);
av_log_set_callback(ffmpegErrorCallback);
FFmpeg现在将把错误记录为人类可读的消息。它告诉我它找不到
aresample
filter。这就是我解决问题的方法

choisen_beat_fx = avfilter_get_by_name("aecho");
av_opt_set    (choisen_beat_fx_ctx, "volume",     AV_STRINGIFY(0.5), AV_OPT_SEARCH_CHILDREN);
void ffmpegErrorCallback(void *ptr, int level, const char *fmt, va_list vargs) {
    LOGE("ffmpegErrorCallback Error Occurred! Err: %s", fmt);
}

av_log_set_level(AV_LOG_ERROR);
av_log_set_callback(ffmpegErrorCallback);