起因:
在做pcm编码aac时,运行报错:failed to find codec
查看ffmpeg中已有的aac编码器:ffmpeg -encoders | grep aac
没有找到libfdk_aac
尝试重新编译 ffmpeg:
./configure --enable-shared --enable-gpl --enable-nonfree --enable-libx264
--enable-libfdk-aac --enable-libmp3lame --prefix=/opt/ffmpeg
报错:ERROR: libfdk_aac not found
原因:libfdk_aac、x264等模块已经从ffmpeg独立出去了,我们需要自己导入libfdk_aac和x264库。
编译x264、libfdk_aac
下载地址:
libfdk-aac下载
libmp3lame下载
libx264下载
统一配置:./configure --enable-shared --prefix=/home/zhou/ffmpeg/packages/encoders
编译安装:make && make install
重新编译ffmpeg:
./configure --enable-shared --enable-gpl --enable-nonfree --enable-libx264
--enable-libfdk-aac --enable-libmp3lame --prefix=/opt/ffmpeg
--extra-cflags="-I/home/zhou/ffmpeg/packages/encoders/include"
--extra-ldflags="-L/home/zhou/ffmpeg/packages/encoders/lib"
配置时可以看到,libfdk_aac、libmp3lame、libx264三个编码器已经使能!
编译安装:make && sudo make install
安装完成后需要重新生成软链接ln -s /opt/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
,然后sudo ldconfig,再执行ffmpeg -v。
问题:libfdk-aac.so.2: wrong ELF class: ELFCLASS32
原因
:不是我们编译的libfdk-aac有问题,而是因为ffmpeg调用的是系统中的其它libfdk-aac库;使用locate libfdk-aac可以直接定位系统中的库文件。
解决
:设置依赖链接库
vim ~/.bashrc中添加如下内容,然后使用命令source ~/.bashrc使其生效。
export LD_LIBRARY_PATH=/home/zhou/ffmpeg/packages/encoders/lib/:$LD_LIBRARY_PATH