FFmpeg和H.264交叉编译
编译环境
操作系统: CentOS 7 FFmpeg版本: 3.0.8
编译步骤
创建源代码目录,安装目录以及可执行文件目录
mkdir ~/ffmpeg_sources ~/ffmpeg_build ~/bin
解决依赖
yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel
安装nasm
cd ~/ffmpeg_sources curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.13.02/nasm-2.13.02.tar.bz2 tar xjvf nasm-2.13.02.tar.bz2 cd nasm-2.13.02 ./autogen.sh ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install
安装yasm
cd ~/ffmpeg_sources curl -O -L http://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
安装libx264
cd ~/ffmpeg_sources git clone --depth 1 http://git.videolan.org/git/x264 cd x264 PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make make install
如果在
./configure
中出现Found no assembler. Minimum version is nasm-2.13
错误,需要将~/bin
目录加到PATH
变量中,命令如下:
PATH="$HOME/bin/:$PATH"
然后重新执行./configure
安装ffmpeg
cd ~/ffmpeg_sources curl -O -L https://ffmpeg.org/releases/ffmpeg-3.0.8.tar.bz2 tar -xjvf ffmpeg-3.0.8.tar.bz2 cd ffmpeg-3.0.8 ./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-libx264 \ --enable-nonfree --enable-shared make make install
在执行
./configure
可能会出现warning:using libx264 without pkg-config
,这里需要设置PKG_CONFIG_PATH
变量,如下命令:
export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig/:$PKG_CONFIG_PATH"
然后重新执行./configure
。在执行make
可能会出现x264_bit_depth
没有声明的错误,执行下列命令:
vim ./libavcodec/libx264.c
:1,$s/x264_bit_depth/X264_BIT_DEPTH/c
然后重新执行后续命令。
查看h264是否安装
cd ~/bin ./ffmpeg -codecs | grep h264*
如果出现动态库链接不到的问题,设置如下变量,重新执行
./ffmpeg
export LD_LIBRARY_PATH="$HOME/ffmpeg_build/lib/:$LD_LIBRARY_PATH
"
屏幕显示
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb )
表示h264
编解码器安装成功。