CentOS下FFmpeg启用libwebp咨询:RPM Fusion安装后不支持WebP怎么办
解决CentOS上FFmpeg缺失WebP支持的问题
别着急直接从源码编译!我们有更简便的方案——通过重新构建RPM Fusion提供的FFmpeg源码包(SRPM)来添加libwebp支持,既能保持系统包管理的一致性,又比手动编译源码省心。下面一步步来:
一、先搭好构建环境和依赖
首先安装构建RPM包需要的工具,以及libwebp的开发依赖,还有FFmpeg的所有构建依赖:
sudo dnf install rpm-build rpmdevtools yum-utils sudo dnf install libwebp-devel sudo dnf builddep ffmpeg
然后初始化RPM的构建目录结构:
rpmdev-setuptree
二、获取FFmpeg的SRPM包
从RPM Fusion仓库下载对应版本的FFmpeg源码包:
dnf download --source ffmpeg
这会把.src.rpm文件下载到当前工作目录。
三、修改配置启用libwebp支持
把下载的SRPM包解压到构建目录:
rpm -ivh ffmpeg-*.src.rpm
然后进入SPEC文件所在目录编辑配置:
cd ~/rpmbuild/SPECS vi ffmpeg.spec
找到以%configure开头的配置块,在里面添加--enable-libwebp参数——记得放在反斜杠结尾的行里,比如:
%configure \ --prefix=%{_prefix} \ --bindir=%{_bindir} \ --enable-libwebp \ # 就是这一行,加进去 ... # 其他原有配置
四、重新构建FFmpeg的RPM包
执行构建命令,让系统帮你处理编译细节:
rpmbuild -ba ffmpeg.spec
构建完成后,生成的FFmpeg主包和库包会在~/rpmbuild/RPMS/下对应你的架构目录里(比如x86_64)。
五、替换原有FFmpeg包
用本地构建好的包替换系统里原来的FFmpeg:
sudo dnf install ~/rpmbuild/RPMS/x86_64/ffmpeg-*.rpm ~/rpmbuild/RPMS/x86_64/ffmpeg-libs-*.rpm
最后验证一下WebP支持是否生效:
ffmpeg -codecs | grep webp
如果输出里能看到WEBP相关的编码/解码条目,就说明成功了!
兜底方案:从源码编译FFmpeg
要是上面的SRPM方法遇到了版本兼容或者仓库的问题,再考虑源码编译——虽然步骤多一点,但灵活性更高:
- 安装编译依赖:
sudo dnf install gcc gcc-c++ make cmake libwebp-devel yasm nasm # 按需添加你需要的其他编码库,比如libx264、libmp3lame等 sudo dnf install x264-devel lame-devel
- 下载FFmpeg源码(可以选稳定版或者最新git版本):
git clone https://git.ffmpeg.org/ffmpeg.git cd ffmpeg # 或者下载稳定版压缩包:wget https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz && tar -xJf ffmpeg-6.0.tar.xz && cd ffmpeg-6.0
- 配置编译选项并编译安装:
./configure --enable-libwebp --enable-gpl --enable-nonfree # 根据需求添加其他选项 make -j$(nproc) # 用所有CPU核心加速编译 sudo make install
同样用ffmpeg -codecs | grep webp验证支持情况。
总的来说,优先选SRPM重新构建的方法,因为它能和系统的包管理工具兼容,后续更新也更方便,不用手动维护源码编译的版本。
内容的提问来源于stack exchange,提问作者Hadi Aminzadeh




