notebook/CentOS7CompileOpencvFFmpeg.md

3.1 KiB

编译ffmpeg

省略下载步骤,下载内容见FFmpeg官方编译Wiki

编译需要的容器

docker run -it -d --privileged=true --name centos7 -p 2333:22 centos:7 /usr/sbin/init
docker exec -it centos7 bash
# 编译需要的环境
yum install autoconf automake bzip2 bzip2-devel freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel

# 解压源码
tar xzvf ffmpeg_sources.tar.gz
cd ~/ffmpeg_sources

tar xjvf nasm-2.15.05.tar.bz2
tar xzvf yasm-1.3.0.tar.gz
tar xzvf lame-3.100.tar.gz
tar xzvf opus-1.3.1.tar.gz
tar zxvf libvpx.tar.gz -m
tar zxvf ffmpeg-4.4.tar.gz
tar zxvf x264-stable.tar.gz
mv x264-stable x264
tar zxvf x265_git.tar.gz
tar zxvf fdk-aac.tar.gz

# 手动安装cmake
./cmake-3.21.3-linux-x86_64.sh --prefix=/usr/local
mv /usr/local/cmake-3.21.3-linux-x86_64 /usr/local/cmake
# 添加到环境变量并生效
echo "export PATH=\$PATH:/usr/local/cmake/bin" >> ~/.bashrc
source ~/.bashrc

# 编译nasm
cd ~/ffmpeg_sources/nasm-2.15.05
./autogen.sh
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make -j6 && make install

# 编译yasm
cd ~/ffmpeg_sources/yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make -j6 && make install

# 编译x264
cd ~/ffmpeg_sources/x264
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make -j6 && make install

# 编译x265
cd ~/ffmpeg_sources/x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make -j6 && make install

# 编译fdk-aac
cd ~/ffmpeg_sources/fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make -j6 && make install

# 编译lame
cd ~/ffmpeg_sources/lame-3.100
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make -j6 && make install

# 编译opus
cd ~/ffmpeg_sources/opus-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make -j6 && make install

# 编译vpx
cd ~/ffmpeg_sources/libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make -j6 && make install

# 编译ffmpeg
cd ~/ffmpeg_sources/ffmpeg-4.4 
PATH="$HOME/bin:$PATH" 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 \
  --enable-shared
make -j6 && make install

编译opencv

# wget  -DCMAKE_INSTALL_PREFIX=/usr/local/
mkdir build && cd build
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DWITH_FFMPEG=ON ../
make -j6 && make install