使用node.js流提供远程URL

问题描述 投票:1回答:1

我有一个视频存储在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?

仅供参考,暂时将内容下载到服务器上并在投放后将其删除是不可行的。因此,该网站应该会获得良好的访问量。

node.js amazon-s3 safari video-streaming node.js-stream
1个回答
2
投票

如何使用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是一个不错的选择。

© www.soinside.com 2019 - 2024. All rights reserved.