创建文件夹
- ffmpeg_sources 存放源文件
- ffmpeg_build 构建文件并安装库
- bin 存放二进制可执行文件
安装依赖环境 整体安装
sudo apt-get update -qq && sudo apt-get -y install \autoconf \automake \build-essential \cmake \git-core \libass-dev \libfreetype6-dev \libgnutls28-dev \libsdl2-dev \libtool \libva-dev \libvdpau-dev \libvorbis-dev \libxcb1-dev \libxcb-shm0-dev \libxcb-xfixes0-dev \meson \ninja-build \pkg-config \texinfo \wget \yasm \zlib1g-dev
- 如果在安装上述文件时,有些包没有成功安装,可以单独指定命令进行安装
- sudo apt-get install xx
安装依赖环境 单独安装
NASM
- 注意版本要 ≥ 2.13。本文安装版本是 2.15.05
- 安装方式
cd ~/ffmpeg_sources && \
wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2 && \
tar xjvf nasm-2.15.05.tar.bz2 && \
cd nasm-2.15.05 && \
./autogen.sh && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make && \
make install
- 如果使用apt-get安装nasm,不被认可,也识别不到,参考如下链接,进行卸载
- 安装 nasm 在 Ubuntu 16.04 (Xenial Xerus) 🥇 [InstallOnLinux]
- sudo apt-get autoremove --purge nasm
libx264
- H.264 视频编码器。版本要 ≥ 118
- 需要 ffmpeg 编译选项配置 --enable-gpl 和 --enable-libx264
- sudo apt-get install libx264-dev
libx265
- H.265/HEVC 视频编码器。版本 ≥ 68
- 需要 ffmpeg 编译选项配置 --enable-gpl 和 --enable-libx265
- sudo apt-get install libx265-dev libnuma-dev
libvpx
- VP8/VP9 视频编码、解码器。版本 ≥ 1.4.0
- 需要 ffmpeg 编译选项配置 --enable-libvpx
- sudo apt-get install libvpx-dev
libfdk-aac
- AAC 音频编码器
- 需要 ffmpeg 编译选项配置 --enable-libfdk-aac
- 如果配置包含了 --enable-gpl 需要同时添加 --enable-nonfree
- sudo apt-get install libfdk-aac-dev
libmp3lame
- mp3 音频编码器。版本 ≥ 3.98.3
- 需要 ffmpeg 编译选项配置 --enable-libmp3lame
- sudo apt-get install libmp3lame-dev
libopus
- Opus音频解码器和编码器。版本 ≥ 1.1
- 需要 ffmpeg 编译选项配置 --enable-libopus
- sudo apt-get install libopus-dev
libunistring-dev
- sudo apt-get install libunistring-dev
libdav1d
- AV1 解码器,比libaom 快得多
- 需要 ffmpeg 编译选项配置 --enable-libdav1d
- 通过 Python 包索引完成
- 要求0.49.0版本以上
- sudo apt-get install python3-pip
- sudo pip3 install --user meson
- 问题:meson_options.txt:1:0: ERROR: Unknown type feature.错误是由于meson版本不匹配导致的
- 解决办法:1,卸载apt 安装的meson;2,pip3 install --user meson;3,修改path路径使得pip安装的meson优先于系统meson被搜索到 export PATH=~/.local/bin:$PATH
- 检测:分别在普通用户和root用户下使用命令 meson -v 检测版本,验证是否一致
- 上述操作无误之后,继续执行
git clone --depth=1 https://code.videolan.org/videolan/dav1d.git && \
cd dav1d && \
mkdir build && cd build && \
meson --bindir="/usr/local/bin" .. && \
ninja && \
ninja install
libsvtav1
- AV1 视频解码器和编码器。FFmpeg 只支持编码器,因此编译不支持解码器
- 需要 ffmpeg 编译选项配置 --enable-libsvtav1
git clone --depth=1 https://github.com/OpenVisualCloud/SVT-AV1
cd SVT-AV1
cd Build
cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
make -j $(nproc)
sudo make install
编译FFmpeg
cd ~/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
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 -lm" \--ld="g++" \--bindir="$HOME/bin" \--enable-gpl \--enable-gnutls \--enable-libass \--enable-libfdk-aac \--enable-libfreetype \--enable-libmp3lame \--enable-libopus \--enable-libsvtav1 \--enable-libdav1d \--enable-libvorbis \--enable-libvpx \--enable-libx264 \--enable-libx265 \--enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r
结果验证
参考链接
- FFmpeg
- Ubuntu 20.04 搭建 CLion FFmpeg 开发环境_TYYJ-洪伟的博客-CSDN博客
- FFmpeg Ubuntu 20.04 编译_TYYJ-洪伟的博客-CSDN博客
- ubuntu下更新meson版本_ewerwerwerer的博客-CSDN博客_meson升级
- 安装 nasm 在 Ubuntu 16.04 (Xenial Xerus) 🥇 [InstallOnLinux]
- https://cache.one/read/16695804
- How to install or uninstall dav1d on Ubuntu 20.10 (Groovy Gorilla) ?
- ubuntu下更新meson版本_ewerwerwerer的博客-CSDN博客_meson升级
- ubuntu上安装meson & 如何使用meson编译C代码_南沙的星星的博客-CSDN博客_meson编译
- linux - ERROR: SvtAv1Enc not found using pkg-config - Stack Overflow