我正在使用node.js构建应用,我成功上传了视频,但我需要为其生成视频缩略图。目前我使用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")
的教程
上面的代码确实生成了jpg文件,但它不是缩略图而是视频屏幕截图,我想知道是否有其他方法可以生成视频缩略图,或者如何执行ffmpeg命令来制作真正的缩略图(调整大小),我更喜欢png文件。
答案 0 :(得分:11)
Reference to GitHub fluent-ffmpeg project
从original StackOverflow answer重复示例:
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')
});
答案 1 :(得分:1)
通过在命令中添加-s widthxheight选项来调整大小。
答案 2 :(得分:1)
有一个节点模块: video-thumb
它基本上只是调用exec ffmpeg
答案 3 :(得分:0)
我建议使用https://www.npmjs.com/package/fluent-ffmpeg从Node.js调用ffmpeg
答案 4 :(得分:0)
相反,我建议使用thumbsupply。除了为您提供缩略图之外,它还可以缓存它们以显着提高性能。
npm install --save thumbsuppply
安装模块后,您可以按照以下方式使用它。
const thumbsupply = require('thumbsupply')("com.example.application");
thumbsupply.generateThumbnail('some-video.mp4')
.then(thumb => {
// serve thumbnail
})
答案 5 :(得分:0)
使用media-thumbnail,您可以轻松地从视频中生成缩略图。该模块基本上包装了ffmpeg缩略图功能。
const mt = require('media-thumbnail')
mt.forVideo(
'./path/to/video.mp4',
'./path/to/thumbnail.png', {
width: 200
})
.then(() => console.log('Success'), err => console.error(err))
您还可以使用此程序包从图像中创建缩略图。
答案 6 :(得分:0)
app.post('/convert', upload.any(), (req, res) => {
console.log("calling", req.files)
let thumbNailName = req.files[0].filename.split('.')
var gm = require('gm');
gm('./src/Upload/'+req.files[0].filename)// get pdf file from storage folder
.thumb(
50, // Width
50, // Height
'./src/thumbnail/'+thumbNailName[0]+'.png', // Output file name
80, // Quality from 0 to 100
function (error, stdout, stderr, command) {
if (!error) {
console.log("processing");
} else {
console.log("error")
}
}
);
})