使用 node.js 流服务远程 url
Serve remote url with node.js stream
我有一个视频存储在 amazon s3 中。
现在我使用 node.js 流
将其提供给客户端
return request(content.url).pipe(res)
但是,以下格式不适用于 safari。
Safari 无法播放流式数据。但是,相同的代码适用于 chrome 和 firefox。
我做了一些研究,发现
chrome 的请求内容范围参数看起来像
[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 做同样的事情?
仅供参考,暂时在服务器上下载内容并在服务后删除它是不可行的。因为,该网站应该会获得良好的访问量。
How can I do the same with remote url stored in s3?
不要。
让 S3 提供数据。签署 URL 以暂时允许访问客户端。然后,您不必提供任何服务或代理任何东西,并且可以节省大量带宽。来自 the documentation 的示例:
var params = {Bucket: 'bucket', Key: 'key'};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url);
...As, the website is supposed to receive good traffic.
您可能还想使用 CDN 来进一步降低成本并提高性能。如果您已经在使用 AWS,CloudFront 是一个不错的选择。
我有一个视频存储在 amazon s3 中。
现在我使用 node.js 流
将其提供给客户端return request(content.url).pipe(res)
但是,以下格式不适用于 safari。
Safari 无法播放流式数据。但是,相同的代码适用于 chrome 和 firefox。
我做了一些研究,发现
chrome 的请求内容范围参数看起来像
[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 做同样的事情?
仅供参考,暂时在服务器上下载内容并在服务后删除它是不可行的。因为,该网站应该会获得良好的访问量。
How can I do the same with remote url stored in s3?
不要。
让 S3 提供数据。签署 URL 以暂时允许访问客户端。然后,您不必提供任何服务或代理任何东西,并且可以节省大量带宽。来自 the documentation 的示例:
var params = {Bucket: 'bucket', Key: 'key'};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url);
...As, the website is supposed to receive good traffic.
您可能还想使用 CDN 来进一步降低成本并提高性能。如果您已经在使用 AWS,CloudFront 是一个不错的选择。