我正在使用Nodejs开发一个Web应用程序。我正在使用Amazon S3存储桶来存储文件。我现在正在做的是当我将视频文件(mp4)上传到S3存储桶时,我将从lambda函数中获取视频文件的缩略图照片。要获取视频文件的缩略图照片,我正在使用此包 - https://www.npmjs.com/package/ffmpeg。我在笔记本电脑上本地测试了包,它正在工作。
这是我在笔记本电脑上测试的代码
var ffmpeg = require('ffmpeg');
module.exports.createVideoThumbnail = function(req, res)
{
try {
var process = new ffmpeg('public/lalaland.mp4');
process.then(function (video) {
video.fnExtractFrameToJPG('public', {
frame_rate : 1,
number : 5,
file_name : 'my_frame_%t_%s'
}, function (error, files) {
if (!error)
console.log('Frames: ' + files);
else
console.log(error)
});
}, function (err) {
console.log('Error: ' + err);
});
} catch (e) {
console.log(e.code);
console.log(e.msg);
}
res.json({ status : true , message: "Video thumbnail created." });
}
以上代码效果很好。它给了我视频文件的缩略图照片(mp4)。现在,我正在尝试在AWS lambda函数中使用该代码。问题是上面的代码使用视频文件路径作为获取缩略图的参数。在lambda函数中,我只能获取文件的base 64编码格式。我可以获取文件的id(s3路径),但我不能将其用作获取缩略图的参数(文件路径),因为我的s3存储桶不允许公共访问。
所以,我试图做的是我试图在lambda函数项目中本地保存base 64编码视频文件,然后将文件路径作为获取缩略图的参数传递。但问题是AWS lamda函数文件系统是只读的。所以我无法将任何文件写入文件系统。所以我现在要做的就是直接从base 64编码的视频文件中检索缩略图。我该怎么办?
答案 0 :(得分:1)
看起来您使用了错误的文件位置
/ tmp / *是临时文件的可写位置,限于 512MB
查看与您喜欢的教程相同的教程。
https://concrete5.co.jp/blog/creating-video-thumbnails-aws-lambda-your-s3-bucket
Lambda文档:
https://docs.aws.amazon.com/lambda/latest/dg/limits.html
短暂的磁盘容量(“/ tmp”空间) 512 MB
希望它有所帮助。