【问题标题】:Serve remote url with node.js stream使用 node.js 流提供远程 URL
【发布时间】:2020-06-18 20:25:37
【问题描述】:

我有一个视频存储在 amazon s3 中。

现在我通过 node.js 流将它提供给客户端

return request(content.url).pipe(res)

但是,以下格式不适用于 safari。

Safari 无法播放流数据。但是,相同的代码适用于 chrome 和 firefox。

我做了一些研究发现

chrome 的 request content-range 参数看起来像

[0-]

但是,Safari 对内容范围也是如此

[0-10][11-20][21-30]

现在,如果内容存储在我的服务器中,我可以用夹头破坏文件

fs.createReadStream(path).pipe(res)

以请求的内容范围为 Safari 提供服务

正如本博客中提到的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】:

    如何对存储在 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 是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2014-05-18
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 2021-03-15
      • 2011-12-12
      • 2017-06-02
      相关资源
      最近更新 更多