Javacpp:无法将 libfdk_aac 添加到 ffmpeg 预设

Javacpp: Can't manage to add libfdk_aac to ffmpeg presets

我们正在尝试使用 javacpp 重新编译 ffmpeg 项目并启用 --enable-libfdk-aac,构建工作正常,但我们无法使用 libfdk_aac 解码 audio_stream。

我们正在调用:avcodec_find_decoder_by_name("libfdk_aac") 并得到以下结果:

Exception: avcodec_find_decoder() error: Unsupported audio format or codec not found: 86018.

我们对ffmpeg目录下的ccpbuild.sh进行了如下修改:

  1. 在ENABLE变量

  2. 中添加指令:--enable-libfdk-aac
  3. 获取依赖项:download https://github.com/mstorsjo/fdk-aac/tarball/master fdk-aac.tar.gz

  4. 解压:tar -xzvf ../fdk-aac.tar.gz

  5. 正在安装: cd ../mstorsjo-fdk-aac* autoreconf -fiv ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic make -j $MAKEJ make install

我 运行 所有这些都是在 macosx 平台上完成的。

过程好像没问题,用maven编译项目也能正常,但是调用codec的时候就不行了"libfdk_aac"。 我想知道我是不是做错了什么,或者是否还有其他地方需要注册这个编解码器? (特别是因为这是一个外部库)

非常感谢

最后,ffmpeg 的 javacpp 预设没有任何问题。我们在预设中添加 libfdk 的方式(如我在问题 post 中所述)是正确的。

但是在 Javacv 的 FFmpegFrameGrabber class 中,我们在解码媒体时缺少 "force" 音频编解码器的方法。 我们修改了这个 class 以添加一个 setAudioCodecName 方法,现在可以正常工作了。 然后我们可以设置 libfdk_aac(或任何其他编解码器)来解码音频,或使用 FFmpegFrameRecorder 对音频进行编码。