使用videoshow+ffmpeg制作幻灯片视频报错:ffmpeg exited with code 1
解决videoshow + ffmpeg 报错 "Error: ffmpeg exited with code 1" 的方案
我之前踩过这个坑!ffmpeg返回exit code 1其实是个非常宽泛的错误提示,本质是ffmpeg在执行转码/合成操作时遇到了具体的输入、输出或配置问题。咱们一步步来排查解决:
1. 先把ffmpeg的路径给videoshoe配置好(最常见的原因)
你已经引入了@ffmpeg-installer/ffmpeg,但别忘了主动告诉videoshow用这个安装好的ffmpeg可执行文件路径!默认情况下videoshow可能找不到正确的ffmpeg,或者调用了系统里的旧版本。修改你的代码,加上关键的路径配置:
var videoshow = require('videoshow') const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path; videoshow.setFfmpegPath(ffmpegPath); // 这行一定要加! var images = [ 'image1.jpg', 'image1.jpg', 'image1.jpg' ] var videoOptions = { fps: 25, loop: 5, // 每张图片停留秒数 transition: true, transitionDuration: 0.5, // 过渡动画时长(可选,默认0.5秒) format: 'mp4', codec: 'libx264' // 指定编码器,避免系统默认编码兼容问题 } videoshow(images, videoOptions) // 如果要加背景音频,确保文件存在且路径正确 .audio('background.mp3') .save('output.mp4') .on('start', (command) => { console.log('执行的ffmpeg命令:', command); // 打印完整命令,方便排查细节 }) .on('error', (err, stdout, stderr) => { console.error('错误信息:', err); console.error('ffmpeg详细错误日志:', stderr); // 重点看这里!能找到具体失败原因 }) .on('end', (output) => { console.log('视频生成完成:', output); });
2. 检查图片文件的有效性
- 确保
image1.jpg确实在脚本的执行目录下,或者用绝对路径(比如path.join(__dirname, 'image1.jpg')),避免相对路径导致的文件找不到问题。 - 确认图片格式是ffmpeg支持的(比如JPG、PNG),尽量不要用WebP这类需要额外编码库的格式,如果必须用,得确保你的ffmpeg版本包含对应的编码组件。
3. 查看ffmpeg的stderr日志定位具体问题
上面代码里的stderr输出是关键!exit code 1只是告诉你失败了,但stderr里会有具体的错误描述:
- 如果提示
No such file or directory:要么是图片/音频文件找不到,要么是输出目录没有写入权限。 - 如果提示
Invalid encoder:说明你指定的编码器不存在,换用libx264这类通用编码器试试。 - 如果提示
Permission denied:给输出目录添加写入权限,或者换个有权限的目录生成视频。
4. 验证ffmpeg本身是否正常
直接在命令行运行${ffmpegPath} -version(把ffmpegPath换成你代码里的实际路径),看看ffmpeg能不能正常启动,有没有报错。如果ffmpeg本身无法运行,那videoshow肯定没法工作。
内容的提问来源于stack exchange,提问作者jibran
相关产品推荐
相关产品推荐

