Bootstrap

Unknown encoder ‘libfdk_aac‘解决办法

问题背景

最近在linux上学习使用ffmpeg,想使用ffmpeg来录制音频。一般音频使用的是aac编码,据说libfdk_aac比ffmpeg默认的aac编码器要好,尝试使用libfdk_aac编码器来进行编码。

我的ffmpeg是通过apt install ffmpeg的方式来进行安装的。默认没有启用libfdk_aac。那么我尝试自己编译ffmpeg试试。

问题解决过程

  1. 先尝试自己编译ffmpeg,那么需要先安装libfdk_aac对应的依赖项。我这里,宁可多装,也不要少装,所以把几个和fdk, aac相关的库,都安装了一遍。
sudo apt install  libfdk-aac-dev libfdk-aac1 fdkaac aac-enc

安装完成之后,再编译ffmpeg

./configure --enable-shared --disable-static --enable-debug=3 --enable-libfdk-aac
make -j8
sudo make install

然后,运行

ffmpeg -i xx.mp4 -vn -c:a libfdk_aac -ar 44100 -channel 2 -profile:a aac_he_v2 1.aac

结果还是提示Unknown encoder ‘libfdk_aac’,中间有个提示:
WARNING: library configuration mismatch。 我想应该是原来的ffmpeg和自己编译的冲突了。

  1. 尝试卸载原来的所有ffmpeg相关内容。
dpkg -l | grep ffmpeg

然后把这里所有列出来的包,全都通过dpkg -r 卸载掉,然后通过dpkg --purge 彻底卸载掉。
先后卸载了 ffmpeg, libffmpegthumbnailer-dev, libffmpegthumbnailer4v5, libxine2-ffmpeg,然后再运行之前的 命令

ffmpeg -i xx.mp4 -vn -c:a libfdk_aac -ar 44100 -channel 2 -profile:a aac_he_v2 1.aac

调用成功。

问题原因

那么导致这个问题,就2个原因:

  1. 默认的ffmpeg,没有启用libfdk_aac,这个通过自己安装libfdk_aac相关的开发环境,编译ffmpeg解决。
  2. 之前的ffmpeg包,与我们自己编译的ffmpeg包有一些不匹配的,删除掉原来的ffmpeg相关的包。
;