You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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方法遇到了版本兼容或者仓库的问题,再考虑源码编译——虽然步骤多一点,但灵活性更高:

  1. 安装编译依赖:
sudo dnf install gcc gcc-c++ make cmake libwebp-devel yasm nasm
# 按需添加你需要的其他编码库,比如libx264、libmp3lame等
sudo dnf install x264-devel lame-devel
  1. 下载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
  1. 配置编译选项并编译安装:
./configure --enable-libwebp --enable-gpl --enable-nonfree  # 根据需求添加其他选项
make -j$(nproc)  # 用所有CPU核心加速编译
sudo make install

同样用ffmpeg -codecs | grep webp验证支持情况。


总的来说,优先选SRPM重新构建的方法,因为它能和系统的包管理工具兼容,后续更新也更方便,不用手动维护源码编译的版本。

内容的提问来源于stack exchange,提问作者Hadi Aminzadeh

火山引擎 最新活动