如何在node.js中生成video缩略图?

我正在用node.js构build一个应用程序,我成功上传了video,但是我需要为它生成一个video缩略图,目前我使用node exec来执行ffmpeg的系统命令来制作缩略图

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

这段代码来自http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-resumable-video-uploade-in-node-js/

上面的代码生成了一个jpg文件,但它不是一个缩略图,但一个video屏幕截图,我不知道是否有任何其他方法来生成video缩略图,或如何执行ffmpeg命令做一个真正thumbanil(resize),我更喜欢PNG文件,请帮助!

通过向您的命令添加-s widthxheight选项来resize。

参考GitHub fluent-ffmpeg项目 。

重复从原始StackOverflow答案的例子:

 var proc = new ffmpeg('/path/to/your_movie.avi') .takeScreenshots({ count: 1, timemarks: [ '600' ] // number of seconds }, '/path/to/thumbnail/folder', function(err) { console.log('screenshots were saved') }); 

有一个节点模块: video-thumb

它基本上只是调用exec ffmpeg

相反,我会build议使用thumbsupply 。 除了为您提供缩略图之外,还会caching这些缩略图以显着提高性能。

 npm install --save thumbsuppply 

安装模块后,可以按照以下方式使用。

 const thumbsupply = require('thumbsupply')("com.example.application"); thumbsupply.generateThumbnail('some-video.mp4') .then(thumb => { // serve thumbnail })