Bootstrap

ffmpeg导入x264、libfdk_aac外部库(已解决wrong ELF class: ELFCLASS32)

起因:

在做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
image-20210503235741389

重新编译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三个编码器已经使能!
image-20210504001813314编译安装: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
image-20210504011420043

原因:不是我们编译的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

image-20210504014627064

;