fluent-ffmpeg缩略图创build错误

我尝试创build一个stream利的ffmpegvideo缩略图这里是我的代码

var ffmpeg = require('fluent-ffmpeg'); exports.thumbnail = function(){ var proc = new ffmpeg({ source: 'Video/express2.mp4',nolog: true }) .withSize('150x100') .takeScreenshots({ count: 1, timemarks: [ '00:00:02.000' ] }, 'Video/', function(err, filenames) { console.log(filenames); console.log('screenshots were saved'); }); } 

但我不断收到这个错误

  "mate data contains no duration, aborting screenshot creation" 

任何想法为什么,

顺便说一下,在Windows上,我把ffmpeg文件夹放在c / ffmpeg中,而且我把ffmpeg / bin添加到了我的环境中,我不知道fluent-ffmpeg是否需要知道ffmpeg的path,但是我可以成功用下面的代码创build一个缩略图

  exec("C:/ffmpeg/bin/ffmpeg -i Video/" + Name + " -ss 00:01:00.00 -r 1 -an -vframes 1 -s 300x200 -f mjpeg Video/" + Name + ".jpg") 

请帮帮我!!!

       

网上收集的解决方案 "fluent-ffmpeg缩略图创build错误"

FFmpeg需要知道video文件的持续时间,而大多数video在文件头部有这样的信息,某些文件不是,大多数原始video像原始的H.264stream。

一个简单的解决scheme可能是在拍摄快照之前对video进行再调整,对于这个任务来说,FFmpeg 0.5命令非常简单:

 ffmpeg -i input.m4v -acodec copy -vcodec copy output.m4v 

该命令告诉FFmpeg读取“input.m4v”文件,使用相同的audio编码器和video编码器(根本不编码)输出,并将数据输出到output.m4v文件中。

FFmpeg会自动添加所有额外的元数据/标题信息,以便拍摄快照。

尝试使用此代码从video创build缩略图

 // You have to Install Below packages First var ffmpegPath = require('@ffmpeg-installer/ffmpeg').path; var ffprobePath = require('@ffprobe-installer/ffprobe').path; var ffmpeg = require('fluent-ffmpeg'); ffmpeg.setFfmpegPath(ffmpegPath); ffmpeg.setFfprobePath(ffprobePath); var proc = ffmpeg(sourceFilePath) .on('filenames', function(filenames) { console.log('screenshots are ' + filenames.join(', ')); }) .on('end', function() { console.log('screenshots were saved'); }) .on('error', function(err) { console.log('an error happened: ' + err.message); }) // take 1 screenshots at predefined timemarks and size .takeScreenshots({ count: 1, timemarks: [ '00:00:01.000' ], size: '200x200' }, "Video/");