crf FFmpeg
但是我的项目报错了 Unrecognized option ‘crf’.
Error splitting the argument list: Option not found,我需要安装完整版 FFmpeg,在服务器的/home/slx 下面有一个文件夹ffmpeg-7.0.2-amd64-static,请问我要怎么操作,才能让项目顺利运行,不再报错
你遇到的错误:
Unrecognized option 'crf'.
Error splitting the argument list: Option not found
说明你当前系统中的 FFmpeg 版本 不支持 -crf
参数,这个参数只有 完整版 FFmpeg(支持 x264 编码器) 才支持。
你已经有了一个静态编译的 FFmpeg 完整版本:
/home/slx/ffmpeg-7.0.2-amd64-static/
里面有可执行文件 ffmpeg
,现在我们来解决:
✅ 解决方案:使用该目录下的 FFmpeg 作为默认命令
你有两个方案,推荐方案 1 更方便全局使用。
✅ 方案 1:将静态 FFmpeg 添加到 PATH(全局使用)
- 打开或创建 shell 启动文件:
nano ~/.bashrc
- 在文件最后添加:
export PATH="/home/slx/ffmpeg-7.0.2-amd64-static:$PATH"
- 让配置生效:
source ~/.bashrc
- 确认是否生效:
which ffmpeg
应输出:
/home/slx/ffmpeg-7.0.2-amd64-static/ffmpeg
再确认版本支持:
ffmpeg -version
应显示带有 --enable-gpl --enable-libx264
字样。
✅ 方案 2:项目代码中指定完整 ffmpeg 路径(仅项目内使用)
如果你不想影响全局,可以修改项目中调用 ffmpeg 的地方,比如:
import subprocess
subprocess.run(['/home/slx/ffmpeg-7.0.2-amd64-static/ffmpeg','-i', 'input.mp4','-c:v', 'libx264','-crf', '23','output.mp4'
])
或者把 ffmpeg
替换为 FFMPEG_PATH
:
FFMPEG_PATH = "/home/slx/ffmpeg-7.0.2-amd64-static/ffmpeg"
🧪 检查当前 ffmpeg 是否支持 -crf
你也可以手动验证:
ffmpeg -h encoder=libx264
如果输出中有 -crf
,说明支持。如果报错或没这参数,就是你原来那个版本太简化。
❗容器中也要注意
如果你是 Docker 容器中运行的项目,即使你在 /home/slx/
外面配置好了,在容器里也看不到。
此时你需要:
- 启动 Docker 时挂载进去:
-v /home/slx/ffmpeg-7.0.2-amd64-static:/ffmpeg
- 然后在容器里使用
/ffmpeg/ffmpeg
执行。
如你愿意,我也可以帮你分析项目中是哪里调用了 ffmpeg
,并给出如何替换调用路径的方法。是否需要?