我有一个视频存储在Amazon s3中。
现在,我通过node.js流将其提供给客户端
return request(content.url).pipe(res)
但是,以下格式不适用于野生动物园。
Safari无法播放流式数据。但是,相同的代码适用于chrome和firefox。
我做了一些研究,发现了
chrome的请求内容范围参数看起来像
[0-]
但是,Safari对内容范围也是如此
[0-10] [11-20] [21-30]
现在,如果内容存储在我的服务器中,则可以用以下方法将文件分成几部分:
fs.createReadStream(path).pipe(res)
根据其请求的内容范围投放野生动物园
如本博客https://medium.com/better-programming/video-stream-with-node-js-and-html5-320b3191a6b6中所述
我该如何处理s3中存储的远程URL?
仅供参考,暂时将内容下载到服务器上并在投放后将其删除是不可行的。因此,该网站应该会获得良好的访问量。
如何使用s3中存储的远程URL进行同样的操作?
不要。
让S3提供数据。签名URL以暂时允许访问客户端。这样,您无需提供任何服务或代理,就可以节省大量带宽。 the documentation中的示例:
var params = {Bucket: 'bucket', Key: 'key'};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url);
...原因,该网站应该获得良好的访问量。
您可能还希望使用CDN来进一步降低成本并提高性能。如果您已经在使用AWS,则CloudFront是一个不错的选择。