最近在学习音视频的知识,发现了一个不错的github开源项目,里面有实例代码,编译运行起来需要实验环境,然后看了源码里面有个dockfile文件,里面详细记录了安装FFmpeg依赖的三方库,所有三方库库都是源码安装,我这里为了节约时间,有些库使用apt install xxx安装,apt install xxx安装不成功了,才采用了源码安装。
安装环境:ubuntu2020,04
下载ffmpeg-4.4源码
curl -sLO https://ffmpeg.org/releases/ffmpeg-4-4.tar.bz2
解压:
tar xvf ffmpeg-4-4.tar.bz2
进入ffmpeg源码目录
cd ffmpeg-4.4/
使用configure配置安装插件特性
./configure --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/usr/local/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --enable-libvmaf --extra-cflags="-I/usr/local/ffmpeg/include" --extra-ldflags="-L/usr/local/ffmpeg/lib"
configure过程中会报错,报错清单见报错部分
使用apt install可以解决的库
sudo apt-get update
sudo apt-get install libaom-dev -y
sudo apt-get install libass-dev -y
sudo apt-get install libaribb24-dev -y
sudo apt-get install libass-dev -y
sudo apt-get install libbluray-dev -y
sudo apt-get install libopencore-amrnb-dev -y
sudo apt install libopenjp2-7-dev -y
sudo apt-get install libsrt-dev -y
sudo apt-get install libtheora-dev -y
sudo apt-get install libvidstab-dev -y
sudo apt-get install libwebp-dev -y
sudo apt-get install libxvidcore-dev -y
sudo apt-get install libzmq3-dev -y
sudo apt install libxcb-devel xcb-util-devel xcb-util-keysyms-devel xcb-util-wm-devel xcb-util-image-devel -y
源码安装
KVAZAAR_VERSION=2.0.0
## kvazaar https://github.com/ultravideo/kvazaar
RUN \
DIR=/tmp/kvazaar && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR_VERSION}.tar.gz && \
tar -zx --strip-components=1 -f v${KVAZAAR_VERSION}.tar.gz && \
./autogen.sh && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
OPENCOREAMR_VERSION=0.1.5
## opencore-amr https://sourceforge.net/projects/opencore-amr/
RUN \
DIR=/tmp/opencore-amr && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sL https://versaweb.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \
tar -zx --strip-components=1 && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
rm -rf ${DIR}
LIBVMAF_VERSION=2.1.1
## libvmaf https://github.com/Netflix/vmaf
RUN \
if which meson || false; then \
echo "Building VMAF." && \
DIR=/tmp/vmaf && \
mkdir -p ${DIR} && \
cd ${DIR} && \
curl -sLO https://github.com/Netflix/vmaf/archive/v${LIBVMAF_VERSION}.tar.gz && \
tar -xz --strip-components=1 -f v${LIBVMAF_VERSION}.tar.gz && \
cd /tmp/vmaf/libvmaf && \
meson build --buildtype release --prefix=${PREFIX} && \
ninja -vC build && \
ninja -vC build install && \
mkdir -p ${PREFIX}/share/model/ && \
cp -r /tmp/vmaf/model/* ${PREFIX}/share/model/ && \
rm -rf ${DIR}; \
else \
echo "VMAF skipped."; \
fi
再次执行
./configure --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/usr/local/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --enable-libvmaf --extra-cflags="-I/usr/local/ffmpeg/include" --extra-ldflags="-L/usr/local/ffmpeg/lib"
编译安装
make -j $(nproc) && make install
报错部分:
sudo apt-get update
sudo apt-get install libaom-dev
sudo apt-get install libaribb24-dev -y
sudo apt-get install libass-dev -y
sudo apt-get install libbluray-dev -y
解决方法:源码安装库
sudo apt-get install libopencore-amrnb-dev -y
版本匹配不上,需要源码安装
sudo apt install libopenjp2-7-dev -y
sudo apt-get install libsrt-dev -y
sudo apt-get install libtheora-dev -y
sudo apt-get install libvidstab-dev -y
源码安装
sudo apt-get install libwebp-dev -y
sudo apt-get install libxvidcore-dev -y
sudo apt-get install libzmq3-dev -y
sudo apt install libxcb-devel xcb-util-devel xcb-util-keysyms-devel xcb-util-wm-devel xcb-util-image-devel -y