我正在使用 Meteor 和 CollectionFS 来存储视频。我需要一个转换来创建我的视频的缩略图。
Videos = new FS.Collection("videos", {
stores: [
new FS.Store.FileSystem("thumbs", {
transformWrite: function(fileObj, readStream, writeStream) {
// What goes here?
}
}),
new FS.Store.FileSystem("videos"),
],
});
我已经想出了如何用 ffmpeg 做到这一点:
ffmpeg -i video.mp4 -vf "thumbnail,scale=640:360" -frames:v 1 thumb.png
但是我不确定如何使用给定的 readStream 来执行此操作并输出 writeStream。
这是一个如何使用 GraphicsMagick 处理图像的示例:
Images = new FS.Collection("images", {
stores: [
new FS.Store.FileSystem("thumbs", {
transformWrite: function(fileObj, readStream, writeStream) {
// Transform the image into a 10x10px thumbnail
gm(readStream, fileObj.name()).resize('10', '10').stream().pipe(writeStream);
}
}),
new FS.Store.FileSystem("images"),
],
});
尽管示例使用本地文件系统,但我将使用 cvs:dropbox,因此您不能依赖本地文件。