377 字
2 分钟
Ubuntu 编译 FFmpeg

安装依赖#

Terminal window
sudo apt-get update -qq && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libmp3lame-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

在 Ubuntu 20.04 上,额外安装:

Terminal window
sudo apt install libunistring-dev libaom-dev libdav1d-dev

部署#

首先拉取源码:

Terminal window
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg_src

配置:

Terminal window
./configure \
--enable-nonfree \
--enable-cuda-nvcc \
--enable-libnpp \
--enable-nvenc \
--bindir="$HOME/app/ffmpeg/bin"

关于 --extra-cflags--extra-ldflags 参数,适用于你的依赖不在默认路径的情况。所以网上很多教程加了这个参数,但通常其实是不需要的。

编译安装:

Terminal window
make -j 32
sudo make install

检查是否部署成功:

记得给生成的 binaries 配置环境变量

Terminal window
ffmpeg -hwaccels
# 输出
Hardware acceleration methods:
vdpau
cuda
vaapi
ffmpeg -codecs | grep nvenc
# 输出结果中应包含
av1_nvenc, h264_nvenc, hevc_nvenc

排障#

编译过程中可能遇到一些缺失依赖问题。可以通过按照 官方文档 的步骤提前安装以规避,也可以在中途按需处理,这里我选择后者。

nasm#

报错:nasm not found or too old. Please install/update nasm or use --disable-x86asm for a build without hand-optimized assembly.

参考官方文档 NASM 章节。

nvenc#

报错:ERROR: nvenc requested, but not all dependencies are satisfied: ffnvcodec

参考官方文档 Hardware acceleration introduction with FFmpegNVENC 章节。

这个库本质上只是修改一些文件,速度非常快,无需 make -j

请注意,安装时切记查看 nv-codec-headers 项目主页的 README。不同驱动版本需要切换到不同的 git 分支

支持作者
支付宝收款码
支付宝
微信收款码
微信
Ubuntu 编译 FFmpeg
https://blog.085404.xyz/posts/ubuntu-编译-ffmpeg/
作者
Sun2ot
发布于
2024-11-19
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 659

部分内容可能已过时