我在node.js项目中工作,我需要将.mp4文件上传到amazon s3。
我有两个问题:
问题1:我已将mp4文件上传到私人类型的存储桶中,我们可以说存储桶的名称是“videobucket'”。要在浏览器中查看视频,我创建了已签名的网址。
我的问题是:
正在签名的ULR是否与STREAMED URL不同。如果是,我应该执行哪些步骤来生成流式URL?
问题2:我需要创建我要上传到亚马逊s3的视频缩略图。我怎么能在node.js中做到这一点?
我是亚马逊和节点的新手。
提前谢谢大家!
我为上传文件而编写的代码如下:
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"); }
});
});
});
答案 0 :(得分:2)
这是我第一个问题的答案。经过谷歌搜索这么多小时后,我发现了这一点。
将Media和JW Player文件上传到Amazon S3存储桶:
步骤1:从JW Player网站上的功能页面下载播放器。然后提取.zip文件的内容。 第2步:登录到管理控制台 https://console.aws.amazon.com/s3/
步骤3:创建公共类型存储桶 步骤4:选择存储桶并单击“上载” 步骤5:将以下文件上传到存储桶
jwplayer.flash.swf
jwplayer.html5.js
jwplayer.js和
您的.mp4和.flv媒体文件
设置公开权限
创建CloudFront Web和RTMP分发
要配置CloudFront以流式传输媒体文件,您需要一个用于JW Player文件和HTML文件的CloudFront Web分发,以及媒体文件的RTMP分发。
<强>步骤强>
步骤1:打开云端控制台 https://console.aws.amazon.com/cloudfront/
第2步:创建分发
步骤3:在创建分发向导的第一页上,接受默认选择RTMP,然后单击继续。
步骤4:在向导的第二页上,单击Origin Domain Name字段,然后选择您在过程中创建的Amazon S3存储桶将媒体和JW Player文件上载到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>