NodeJS 亚马逊s3和节点js视频流和缩略图?[关闭]

sczxawaw  于 2023-02-18  发布在  Node.js
关注(0)|答案(2)|浏览(476)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
我正在一个node.js项目中工作,我需要将.mp4文件上传到amazon s3。
我有两个问题:

    • 问题1:**我已经将mp4文件上传到一个私有类型的bucket中,假设bucket的名称为"videobucket"。为了在浏览器中查看视频,我创建了它的签名URL。

我的问题是:
正在获取的签名ULR是否与流式URL不同。如果是,我应该执行哪些步骤来生成流式URL?

    • 问题2:**我需要创建要上传到amazon s3的视频的缩略图,如何在node. js中完成?

我是亚马逊和node的新手。
提前感谢大家!
我所编写的上载文件的代码如下所示:

var file = req.files.video;

    var fileName = new Date().getTime() + "_" + file.originalname;

    fs.readFile(file.path, function(err, data) {
        if (err) throw err;
        var s3bucket = new AWS.S3({
            params: {
                Bucket: 'myvideos'
            }
        });
        s3bucket.createBucket(function() {
            var params = {
                Key: fileName, //file.name doesn't exist as a property
                Body: data,
                ContentType: file.type,
            };
            s3bucket.upload(params, function(err, data) {
                fs.unlink(file.path, function(err) {
                    if (err) {
                        console.error(err);
                    }
                });

                if (err) {
                    res.status(500).send(err);
                } else { console.log("file uploaded"); }
        });

 });

});
mutmk8jj

mutmk8jj1#

这是我第一个问题的答案,我在谷歌上搜索了这么多个小时才找到这个。
将媒体和JW播放器文件上传到Amazon S3存储桶:
步骤1:从JW Player网站的功能页面下载播放器,然后解压.zip文件的内容。登录到aws管理控制台https://console.aws.amazon.com/s3/
Step3:创建公共类型bucket Step4:选择存储桶并单击Upload(上载)Step5:将以下文件上传到存储桶中
jwplayer.flash.swf
jwplayer.html5.js
jwplayer.js和
您的.mp4和.flv媒体文件
将权限设置为公共

创建CloudFront Web和RTMP分发

要配置CloudFront以流式传输媒体文件,您需要用于JW Player文件和HTML文件的CloudFront Web分发,以及用于媒体文件的RTMP分发。

步骤

第一步:打开云前端控制台https://console.aws.amazon.com/cloudfront/
步骤2:创建分发
步骤3:在创建分发向导的第一页上,接受默认选择RTMP,然后单击继续。
步骤4:在向导的第二页上,单击源域名字段,然后选择您在将媒体和JW Player文件上载到Amazon S3存储桶过程中创建的Amazon S3存储桶。如果您有许多Amazon S3存储桶,则可以键入存储桶名称的前几个字符来筛选列表。
步骤5:创建分发
步骤6:CloudFront创建分发后,分发的“状态”列的值将从“正在进行”更改为“已部署”。这应该需要不到15分钟的时间。
CloudFront分配给您的分发的域名将显示在分发列表中。该域名还将显示在所选分发的“分发设置”页面上。)

嵌入RTMP媒体:

<div id='mediaplayer'>This text will be replaced</div>
<script type="text/javascript">
   jwplayer('mediaplayer').setup({
      'id': 'playerID',
      'width': '720',
      'height': '480',
      'file': 'rtmp://s1cxpk7od1m10r.cloudfront.net/cfx/st/your_streaming_file.mp4',
      'primary':'flash',
      'autostart' : 'true',
   });
</script>
nkoocmlb

nkoocmlb2#

第二部分的答案:你可以使用fluent-ffmpeg来提取视频缩略图https://github.com/fluent-ffmpeg/node-fluent-ffmpeg

var ffmpeg = require('fluent-ffmpeg');
var screenshot = new ffmpeg({source:'./1.mp4'}) // put in the source path of the video
                    .withSize('200x200')
                    .takeScreenshots({count:1,timemarks:['50%'],filename:"screenshot.png",folder:"./"});

对于较新版本的ffmpeg:

ffmpeg('/path/to/video.avi')
.screenshots({
    timestamps: ['50%'],
    filename: 'screenshot.png',
    folder: '/path/to/output',
    size: '200x200'
});

相关问题