【问题标题】:How to get the thumbnail of base64 encoded video file in Nodejs?如何在 Nodejs 中获取 base64 编码视频文件的缩略图?
【发布时间】:2018-07-23 05:09:59
【问题描述】:

我正在使用 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 存储桶不允许公共访问。

所以,我尝试做的是尝试将 base 64 编码的视频文件本地保存在 lambda 函数项目本身中,然后将文件路径作为获取缩略图的参数传递。但问题是 AWS lamda 函数文件系统是只读的。所以我不能将任何文件写入文件系统。所以我现在要做的是直接从 base 64 编码的视频文件中检索缩略图。我该怎么做?

【问题讨论】:

标签: node.js amazon-web-services amazon-s3 lambda ffmpeg


【解决方案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

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2011-05-12
    • 2010-11-19
    • 2012-03-28
    • 2013-02-02
    • 2016-09-06
    • 2015-11-09
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多