人类的孤独像是一种与生俱来的残疾。

ffmpeg编译及安装(续)

C语言 smallfish 3220℃

上一篇文章写了ffmpeg工具(ffmpeg/ffplay/ffprobe/ffserver)以及静态库的编译与安装。但是按大多数教程上说的使能动态编译库则编译通不过,大多数错误形如:relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC

错误提示其实很明确,主要是因为,我们在编译这些库(x264/x265/vpx等)的时候只开启的静态编译。因此希望编译ffmpeg动态库的时候,简单地加上--enable-shared肯定会报错的。

因此,我们需要修改的内容有:

1、重新编译libx264,配置方式基本跟前一编文章一样,但是在./configure 时加上--enable-shared。然后再make -j4 && sudo make install。

2、重新编译libvpx,配置时同样加上--enable-shared选项,make之前记得先make clean一下,否则可能提示编译失败。

3、重新编译libopus。

我们在上一篇文章中,配置选项用了--disable-shared,因此肯定是不行的。所以这里需要使用--enable-shared,--enable-static。编译前先make clean,再make -j4,sudo make install。

4、重新编译libmp3lame。同样的,在之前编译的时候使用了--disable-shared。因此修改如opus。./configure --enable-shared --enable-static --enable-nasm。编译安装。

5、重新编译libfdk-acc。之前的编译还是使用了--disable-shared。改为:./configure --enable-shared --enable-static。编译安装。

至此再重新编译ffmpeg就可以了。

./configure \
--pkg-config-flags="--static" \
--extra-libs="-lpthread -lm" \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-shared \
--enable-nonfree && \
make -j4 && \
sudo make install && \
hash -r

然而有点奇怪的是,我们之前在编译x265时使用了 -DENABLE_SHARED:bool=off,即没有开启x265的动态库编译,但是这里我没有重新编译x265,结果是可以通过的。如果大家遇到提示x265需要带-fPIC重新编译时,可以把它改成:-DENABLE_SHARED:bool=on再试试。

转载请注明:OpenMind » ffmpeg编译及安装(续)

喜欢 (2)