我正在使用Node.js的fluent-ffmpeg模块生成屏幕截图。
我使用了以下代码片段来实现这一目标 -
var filePath = "../app/webroot/img/uploads/video/50_1429701765.mp4";
var destFolder = "../app/webroot/img/uploads/video/screenshots";
var fileName = "screenshots.png";
generateScreenshot(filePath, fileName, destFolder);
function generateScreenshot(filePath, fileName, destFolder) {
ffmpeg(filePath)
.screenshots({
timestamps: ['01%'],
filename: fileName,
folder: destFolder,
size: '320x240'
});
}
但我收到的错误如下 -
Error: Could not get input duration, please specify fixed timemarks
at /var/www/html/tcpapi/node_modules/fluent-ffmpeg/lib/recipes.js:182:29
at /var/www/html/tcpapi/node_modules/fluent-ffmpeg/lib/recipes.js:162:11
虽然我已经设置了时间标记,但屏幕截图并非由此生成。
任何人都有任何建议摆脱这个错误。
由于
答案 0 :(得分:0)
在fluent-ffmpeg模块中,仍然存在一些缺点。因此,他们提供了另一种解决方案。它真正帮助那些面临问题的人,就像我提到的那样。
您可以通过以下命令在您的应用中安装模块的新版本
npm i fluent-ffmpeg-extended
有关详情,您可以看到较新的link模块
由于
答案 1 :(得分:0)
我收到这个错误是因为我是从 youtube 上进行 StreamWriting,所以当我从不同格式的路径获取视频时,请使用 ffprobe 确保您的视频文件是正确的,如下所示:
Rails.application.config.session_store :cookie_store, key: _our_company_session
它还在 ffmpeg 上生成用于制作屏幕截图、缩略图等的输入。
可能需要设置ffprobe路径:
ffmpeg.ffprobe(path_to_video,function(err,metadata){
console.log("Metadata: ",metadata)
})
然后在获取元数据之前获取探测路径:
ffmpeg.setFfprobePath('D:/ffmpeg/bin/ffprobe.exe');