日常转码用系统包即可,遇h.265、libfdk-aac等需求则选静态版或源码编译;静态版解压即用,源码编译需注意--enable-gpl/--enable-nonfree等关键开关。

直接装还是自己编?先看你要干什么
如果你只是转个 MP4 为 AVI、抽个音频、截个视频片段,apt install ffmpeg 或 dnf install ffmpeg 就够了——系统仓库里的版本(比如 Ubuntu 24.04 自带 6.0,CentOS 8+ EPEL 提供 5.1)能跑绝大多数日常任务。
但一旦遇到这些情况,包管理器就容易翻车:
- 想用 H.265 编码(
libx265),但系统版默认没开 - 需要 AAC-LC 以外的音频编码(比如
libfdk-aac,音质更好但许可证受限) - 要处理 ProRes、AV1(
libaom)、或某些老旧封装(如 MXF 时间码校准) -
ffmpeg -version显示 “configuration: … --disable-libx265” —— 这就是功能被阉割了
这时候别硬扛,换静态二进制或源码编译。
新手最快能用的方案:静态预编译版
它不依赖系统库,解压即用,自带 ffmpeg 和 ffprobe,版本新(当前官网镜像已提供 6.1+),适合服务器快速上线。
- 先确认你的 CPU 架构:
lscpu | grep "Architecture",大概率是x86_64(即amd64) - 下载并解压:
wget <a href="https://www.php.cn/link/8f3a59e201178eda99646354098f5c81">https://www.php.cn/link/8f3a59e201178eda99646354098f5c81</a><br> tar -xJf ffmpeg-release-amd64-static.tar.xz
- 移动到标准位置并建软链:
sudo mv ffmpeg-6.1-amd64-static /usr/local/ffmpeg<br> sudo ln -s /usr/local/ffmpeg/ffmpeg /usr/bin/ffmpeg<br> sudo ln -s /usr/local/ffmpeg/ffprobe /usr/bin/ffprobe
- 验证:
ffmpeg -version应显示 “static” 和完整配置(含libx265、libfdk-aac等)
⚠️ 注意:不要用 ffmpeg-git 版本做生产环境批量转码——它可能在某次提交里悄悄改了 -crf 行为或引入内存泄漏,稳定压倒一切。
必须自己编?搞清 configure 关键开关
源码编译不是为了“高级”,而是为了可控。比如你得支持国标 GB/T 28181 流媒体,就必须启用 --enable-librtmp;要做硬件加速(Intel QSV、NVIDIA NVENC),就得加 --enable-libmfx 或 --enable-cuda-nvcc。
常见坑点:
- 缺
yasm或太老 → 报错yasm/nasm not found or too old→ 先装yasm(不是nasm,二者不兼容) - 忘加
--enable-gpl→libx264、libx265直接不可用(它们是 GPL 协议) - 忘加
--enable-nonfree→libfdk-aac编译失败(非自由许可) -
--prefix=/usr/local后没更新ldconfig→ 运行时报libavcodec.so.60: cannot open shared object file - 编译完不运行
sudo ldconfig,也不加/usr/local/lib到/etc/ld.so.conf.d/ffmpeg.conf
一个最小可用配置示例(含常用编码器):
./configure --prefix=/usr/local \<br> --enable-gpl \<br> --enable-nonfree \<br> --enable-libx264 \<br> --enable-libx265 \<br> --enable-libfdk-aac \<br> --enable-libvpx \<br> --enable-libopus
格式转换实操避坑:参数不是越多越好
很多人一上来就堆参数:-c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k,结果转出来体积大、耗时长、播放还卡顿。
实际要分场景选:
- 上传 B 站/抖音:优先用
-c:v libx264 -profile:v high -level 4.0,避免 Level 4.2 导致部分安卓机硬解失败 - 内部归档:用
-c:v libx265 -crf 23 -preset medium,比 H.264 省 40% 空间,但注意老设备可能播不了 - 抽音频保留质量:
-vn -c:a copy(无损提取)或-vn -c:a libmp3lame -q:a 0(最高质量 MP3) - 截取 10 秒视频:
-ss 00:01:20 -t 10 -i input.mp4 -c copy output.mp4→ 加-c copy才真正快,否则会重编码
最常被忽略的一点:时间戳处理。如果原始视频有 B 帧或非单调 DTS,-ss 放前面(输入侧)比放后面(输出侧)更准,但会略慢;追求精度就接受这点延迟。
有些服务器上 ffmpeg 装好了却报 Unknown encoder 'libx265',不是没装,是没启用——回去检查 ffmpeg -encoders | grep x265,没输出就说明 configure 没加 --enable-libx265 或编译时漏了依赖。










