如何解决Heroku平台上ffmpegthumbnailer无法正常调用的问题
Heroku 环境 ffmpegthumbnailer 找不到问题解决方案
问题核心根因
之前单独使用的akomic/heroku-buildpack-ffmpegthumbnailer已停止维护,编译适配的是非常老的Heroku栈版本,和现在Heroku默认的Heroku-22/24系统环境不兼容。就算部署日志显示构建包加载成功,实际的ffmpegthumbnailer二进制文件根本没被正确放到系统可识别的执行路径下,才会出现bash: ffmpegthumbnailer: command not found的报错。
可行解决路径
- 路径1:替换为适配新栈的全量多媒体构建包
- 先移除已经添加的失效旧构建包,执行命令:
heroku buildpacks:remove akomic/heroku-buildpack-ffmpegthumbnailer -a <你的应用名称> - 选择你当前正在使用的、能正常运行ffmpeg的同维护团队的构建包,替换为同系列的、包含ffmpegthumbnailer的全量集成版本,构建包顺序必须放在Ruby语言构建包之前,执行:
heroku buildpacks:add --index 1 <全量多媒体构建包标识> -a <你的应用名称> - 重新触发应用部署:
git push heroku main - 部署完成后执行验证:
heroku run "ffmpegthumbnailer -version" -a <你的应用名称>,正常输出版本号即代表组件注入成功
- 先移除已经添加的失效旧构建包,执行命令:
- 路径2:手动集成静态二进制文件,摆脱第三方构建包依赖
- 先执行
heroku stack确认当前应用使用的系统栈版本(比如Heroku-22基于Ubuntu 22.04构建) - 下载匹配对应系统栈的静态编译版ffmpegthumbnailer二进制文件
- 在项目根目录新建
.heroku/bin目录,把下载好的二进制文件存入该目录 - 修改项目Procfile,在所有应用启动命令前先将本地bin目录加入系统PATH,示例配置:
web: PATH=$PATH:$HOME/.heroku/bin bundle exec puma -C config/puma.rb - 重新部署应用即可,这种方式路径完全可控,不会出现PATH不匹配问题
- 先执行
- 路径3:修正应用侧的命令调用配置
- 确认ffmpegthumbnailer已经正常安装在系统环境后,检查carrierwave的视频处理配置,不要使用命令别名直接调用
ffmpegthumbnailer - 在配置中替换为ffmpegthumbnailer的实际绝对路径(比如
/usr/bin/ffmpegthumbnailer),避免应用运行时的环境变量和构建期不一致导致的找不到命令问题
- 确认ffmpegthumbnailer已经正常安装在系统环境后,检查carrierwave的视频处理配置,不要使用命令别名直接调用
内容的提问来源于stack exchange,提问作者Datalabor
相关产品推荐
相关产品推荐

