尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

说一说FFmpeg6在Linux平台的编译

说一说FFmpeg6在Linux平台的编译 目录1. 先想清楚你要哪种 FFmpeg 62. 基础编译工具链3. 可选编解码依赖决定你 FFmpeg 能干啥4. 拿源码5. configure最核心的一步5.1 路径与库形态5.2 协议开关非常关键5.3 一个“全能型”configureUbuntu 实测可用5.4 硬件加速追加项有卡才加6. 编译与安装7. 验证8. 常见坑编 FFmpeg 6 必踩9. 一个生产建议组合觉得有用就请您帮忙点赞转发收藏吧您的鼓励是我创作的动力多谢看官。由于能力水平有限文中的错误或不严谨的地方在所难免还请批评指正。本文按「为什么要从源码编 → 环境准备 → 拿源码 → configure 核心选项 → make/install → 验证 → 常见坑」的顺序把FFmpeg 6.x6.0 / 6.1.xLinux 平台​ 的编译讲透。以Ubuntu/Debian​ 为主CentOS/RHEL 给对照。1. 先想清楚你要哪种 FFmpeg 6系统包管理器版apt install ffmpeg→ 快但版本老常是 4.x/5.x缺 libx264 外部控制、NVENC、AV1 编码等。源码定制版自己选编码器、静态/动态、硬件加速 → 这才是“详细编译”的意义。FFmpeg 6系列主流稳定线6.02023、6.1.xLTS 性质推荐 6.1.1。2. 基础编译工具链Ubuntu / Debiansudo apt update sudo apt install -y \ build-essential \ # gcc/g/make nasm yasm \ # 汇编优化x264/x265 必需 pkg-config libtool autoconf automake cmake \ gitCentOS / RHEL8sudo dnf groupinstall -y Development Tools sudo dnf install -y nasm yasm pkgconfig libtool cmake git没有 nasm/yasmconfigure 会退化但 x264 性能掉一大截FFmpeg 6 默认优先 nasm。3. 可选编解码依赖决定你 FFmpeg 能干啥最常用的“全功能”依赖sudo apt install -y \ libx264-dev \ # H.264 编码要 --enable-gpl libx265-dev \ # H.265/HEVC要 --enable-gpl libvpx-dev \ # VP8/VP9 libmp3lame-dev \ # MP3 编码 libopus-dev \ # Opus libfdk-aac-dev \ # 高质量 AAC要 --enable-nonfree libvorbis-dev \ libass-dev libfreetype6-dev \ # 字幕/水印 libnuma-dev \ # x265 多核 NUMA libssl-dev # 网络/https 拉流AV1 相关可选sudo apt install -y libdav1d-dev libsvtav1-dev # 解码 dav1d / 编码 svt-av1硬件加速依赖按需Intel VAAPI/QSVlibva-dev libva-drm2 intel-media-va-driver-non-freeNVIDIA NVENCnvidia-driver cuda-toolkitconfigure 加--enable-cuda-nvcc --enable-libnppAMD/通用-libdrm-dev libvulkan-dev4. 拿源码两种方式A. 官方 release tarball可校验推荐生产wget https://ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz sha256sum ffmpeg-6.1.1.tar.xz # 去官网比对 checksum tar xf ffmpeg-6.1.1.tar.xz cd ffmpeg-6.1.1B. Git 切稳定分支开发向git clone https://git.ffmpeg.org/ffmpeg.git cd ffmpeg git checkout release/6.15. configure最核心的一步5.1 路径与库形态--prefix/usr/local/ffmpeg6装到独立目录不覆盖系统/usr/bin/ffmpeg--enable-shared生成.so二进制小但运行期要ldconfig--disable-shared --enable-static单文件自包含体积大适合容器/分发--enable-pic要编动态库或被人链接时必须开5.2 协议开关非常关键--enable-gpl用 x264/x265/libvpx 必须开产物变 GPL--enable-nonfree用 libfdk-aac 必须开开了不能再闭源分发只做内部用、不发红包闭源 → 可以--enable-nonfree商业闭源分发 → 去掉 libfdk-aac用内置aac编码器别开--enable-nonfree5.3 一个“全能型”configureUbuntu 实测可用./configure \ --prefix/usr/local/ffmpeg6 \ --enable-gpl \ --enable-nonfree \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx \ --enable-libmp3lame \ --enable-libopus \ --enable-libfdk-aac \ --enable-libvorbis \ --enable-libass \ --enable-libfreetype \ --enable-openssl \ --enable-shared \ --enable-pic \ --extra-cflags-I/usr/local/include \ --extra-ldflags-L/usr/local/lib只看 H.264 转码的最小可用./configure --prefix/usr/local/ffmpeg6 --enable-gpl --enable-libx2645.4 硬件加速追加项有卡才加NVIDIA--enable-cuda-nvcc \ --enable-libnpp \ --enable-nvenc --enable-nvdec \ --extra-cflags-I/usr/local/cuda/include \ --extra-ldflags-L/usr/local/cuda/lib64Intel--enable-vaapi --enable-libdrm --enable-openclconfigure 跑完一定看末尾输出Enabled outdevices / Enabled encoders里有没有libx264、h264_nvenc。没有就是依赖没找到别硬 make。6. 编译与安装make -j$(nproc) # 吃满核32 核机器十几分钟4 核可能 20 sudo make install sudo ldconfig # 开了 shared 必须刷缓存装到非标准 prefix 时把 bin 放进 PATHexport PATH/usr/local/ffmpeg6/bin:$PATH # 写进 ~/.bashrc 或 /etc/profile.d/ffmpeg6.sh7. 验证ffmpeg -version # 看 configuration: 行里是否含 --enable-libx264 --enable-gpl ffmpeg -hide_banner -encoders | grep -E libx264|libx265|h264_nvenc|aac ffmpeg -hide_banner -codecs | grep -E h264|hevc|vp9|av1转一段测试ffmpeg -f lavfi -i testsrcduration3:size1280x720:rate30 \ -c:v libx264 -crf 23 out.mp48. 常见坑编 FFmpeg 6 必踩ERROR: libx264 not found​ → 没装libx264-dev或装了但 configure 没--enable-gpl。运行ffmpeg: command not found​ → prefix 不在 PATH或 shared 版没ldconfig。symbol lookup error/ 用的还是旧版​ → 系统/usr/bin/ffmpeg还在which ffmpeg确认顺序或hash -r。nonfree 后拿去卖闭源产品​ → 许可证违规去掉 libfdk-aac 用原生 aac 最安全。CUDA 编出报nvcc not found​ → 没装nvidia-cuda-toolkit或--extra-cflags路径错。静态链接时要--enable-pic否则 Python ctypes / 某些 C 工程链不上。想最小体积​ → 用--disable-everything再按需开 decoder/encoder/muxer能砍到几 MB。9. 一个生产建议组合服务器转码集群6.1.1 动态库 gpl x264/x265 opus vaapi/nvenc独立 prefix容器里只拷/usr/local/ffmpeg6。分发给他人的 CLI 工具静态链接 不开 nonfree单文件丢哪都能跑。只做播放/拉流关掉 libx264/libx265 编码器只留解码体积小很多。
返回列表