node.js - 亚马逊 s3 和 Node js 视频流和缩略图?

标签 node.js amazon-web-services amazon-s3 amazon

我在一个 node.js 项目中工作,我需要将 .mp4 文件上传到 amazon s3。

我有两个问题:

问题 1: 我已将 mp4 文件上传到私有(private)类型的存储桶中,假设存储桶的名称是“videobucket”。为了在浏览器中查看视频,我创建了它的签名 URL。

我的问题是:

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

问题 2: 我需要创建要上传到 amazon s3 的视频的缩略图。我如何在 node.js 中做到这一点?

我是 amazon 和 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"); }
        });

 });

});

最佳答案

这是我第一个问题的答案。我在谷歌搜索了这么多小时后找到了这个。

将媒体和 JW 播放器文件上传到 Amazon S3 存储桶:

第 1 步:从 JW Player 网站的“功能”页面下载播放器。然后提取 .zip 文件的内容。 Step2:登录aws管理控制台 https://console.aws.amazon.com/s3/

Step3:创建一个公共(public)类型的bucket Step4:选择bucket,点击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/

第二步:创建分布

Step3:在Create Distribution Wizard的第一页,接受默认选择RTMP,然后点击Continue。

第 4 步:在向导的第二页上,单击源域名字段,然后选择您在将媒体和 JW 播放器文件上传到 Amazon S3 存储桶过程中创建的 Amazon S3 存储桶。如果您有很多 Amazon S3 存储桶,您可以输入存储桶名称的前几个字符来过滤列表。

第 5 步:创建分布

第 6 步:在 CloudFront 创建分配后,分配的状态列的值将从 InProgress 更改为 Deployed。这应该不会超过 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>

关于node.js - 亚马逊 s3 和 Node js 视频流和缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794050/

相关文章:

c# - 如何从 AWS S3 存储下载字节数组形式的文件?

node.js - MongoDB Mongoose 连接数据库时出错

javascript - 使用正则表达式在段落标记之间提取文本

javascript - babel-node 无法在 node_modules 中要求 jsx 文件

java - Linux 在启动时启动 java 程序(EC2 实例)

amazon-web-services - AWS-SAM:如何重新使用 Route53 域而不是重新创建它?

python - 从 Lambda 中的 s3 下载文件

proxy - Node.js - 具有 WebSocket 代理和 SSL 支持的良好 WebServer?

c# - AWS sagemaker invokeEndpoint 模型内部错误

facebook - 使用 Facebook Graph API 上墙时如何共享 Amazon 认证的 URL?