ffmpeg编译linux(centos7)版本-静态版本

在linux平台编译一个不依赖一堆编解码so文件的ffmpeg的步骤,这些步骤完全参考官方文档

https://trac.ffmpeg.org/wiki/CompilationGuide/Centos?spm=a2c6h.12873639.0.0.2e5b54232tszep

如果不需要下面的某些库,就不用下载和编译它,并在在ffmepg的config的时候不要enable它。

编译完了ldd ffmpeg查看,如果没有依赖那些库,说明就编译成功了,我使用的ffmepg的源码是4.3的版本

 

1、创建目录mkdir ~/ffmpeg_sources

 

2、安装NASM

cd ~/ffmpeg_sources
curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
tar xjvf nasm-2.14.02.tar.bz2
cd nasm-2.14.02
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

3、安装Yasm

cd ~/ffmpeg_sources
curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

4、安装libx264

H.264 video encoder. See the H.264 Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-gpl --enable-libx264.

cd ~/ffmpeg_sources
git clone --depth 1 https://code.videolan.org/videolan/x264.git
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install

Warning: If you get Found no assembler. Minimum version is nasm-2.13 or similar after running ./configure then the outdated nasm package from the repo is installed. Run yum remove nasm && hash -d nasm and x264 will then use your newly compiled nasm instead. Ensure environment is able to resolve path to nasm binary.

 

5、安装libx265

H.265/HEVC video encoder. See the H.265 Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-gpl --enable-libx265.

 

cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install

上面提供的这个地址可能下载会失败,则可以从下面的地址下载(直接git或者下tar包)

https://github.com/videolan/x265

https://www.videolan.org/developers/x265.html

 

6、下载libfdk_aac

AAC audio encoder. See the AAC Audio Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-libfdk_aac (and --enable-nonfree if you also included --enable-gpl).

 

cd ~/ffmpeg_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

7、下载libmp3lame

MP3 audio encoder.

Requires ffmpeg to be configured with --enable-libmp3lame.

 

cd ~/ffmpeg_sources
curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar xzvf lame-3.100.tar.gz
cd lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install

8、下载libopus

Opus audio decoder and encoder.

Requires ffmpeg to be configured with --enable-libopus.

cd ~/ffmpeg_sources
curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar xzvf opus-1.3.1.tar.gz
cd opus-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install

9、下载libvpx

VP8/VP9 video encoder and decoder. See the VP9 Video Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with --enable-libvpx.

cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install

上面提供的这个地址可能下载会失败,则可以从下面的地址下载(直接git或者下tar包)

http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvpx.html

https://github.com/webmproject/libvpx

 

10、下载并编译ffmpeg

cd ~/ffmpeg_sources
curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
export PATH="$HOME/bin:$PATH" 
export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" 
./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs=-lpthread \
  --extra-libs=-lm \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libfdk_aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree
make
make install
hash -d ffmpeg  //最后这一句不知道是干啥的,我没执行这个

1)configure提示找不到libfreetype,去掉命令行的--enable-libfreetype

2)再次configure,提示找不到opus,去刚才的opus目录,make uninstall删除安装,重新make,make install。

/*************特别注意*************************

注意上面命令行configure命令前面的那两行,

export PATH="$HOME/bin:$PATH"

export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"

这两句如果单独执行的话,需要使用前面的export,如果把这两句写在configure前面,作为一个正行输入的话,这不会出现“ERROR: opus not found using pkg-config”这样的问题了,如果单独执行每一行的话一定记得在前面加export,否则你安装下面的解决方法,make uninstall或者修改pc文件都不会管用。

**********************************/

3)再次configure就好了。

以上的提示大部分会提示“ERROR: xxx not found”,比如找不到libfdk-aac就提示“ERROR: libfdk_aac not found”,或者“ERROR: opus not found using pkg-config”

如果遇到其他的configure不过的情况,可以看下ffbuild/config.log文件最后的异常信息,就能定位问题所在。

解决方法

1、到那个找不到的库目录下make uninstall删除安装,重新make,make install;

2、找到这个库的pc文件看pc文件里面的内容是否正确,这个文件一般在安装目录的lib/pkgconfig下面,可以试着改改里面的内容看是否能OK。我的安装目录在/root/ffmpeg_build,则pc文件路径如下

 

ffmpeg编译linux(centos7)版本-静态版本_第1张图片

 

一般是改末尾Libs、Libs.private、Cflags:这三行的内容,比如我上次编译静态ffmepg的时候,找不到x265库,修改了x265.pc文件内容就好了,修改方法可以参考其他能config过的库的写法。

 

11、添加到系统path路径中

在/etc/profile末尾添加“export PATH=${PATH}:/root/bin”

执行source /etc/profile,然后就可以再其他目录直接使用了

 

你可能感兴趣的:(Android开发,多媒体,centos,linux)