从S3存储桶流式传输视频

时间:2016-12-28 11:43:50

标签: node.js video-streaming s3-bucket

我正在使用nodejs服务器进行视频流传输。我使用Amazon S3存储桶作为视频存储。而nodejs正在Amazon EC2实例中运行。为了响应客户端的请求流式传输特定的视频文件,首先需要将文件从S3存储桶下载到EC2实例(nodejs服务器),这是一个耗时的过程,客户端必须等待几个第一个视频片段从nodejs发送到客户端之前的秒数。我正在寻找一种方法来删除下载时间间隔。 我的问题是:

1#有没有办法从S3存储桶直接流式传输?

2#S3存储是否允许获取存储文件的小块而不是下载整个文件?

注意:视频流应该由iOS视频播放器使用。 我是视频流和S3存储的新手。

请在这种情况下建议我最好的解决方案。

3 个答案:

答案 0 :(得分:5)

您需要使用以下AWS服务以标准方式从S3存储桶实现按需视频流。

1)Amazon Elastic Transcoder

Amazon Elastic Transcoder是云中的媒体转码。它旨在成为一种高度可扩展,易于使用且经济高效的方式,供开发人员和企业将媒体文件从其源格式转换(或“转码”)为可在智能手机,平板电脑和PC等设备上播放的版本。 / p>

  

将您的视频文件转换为HLS格式(受支持最广泛的格式)   流媒体协议)

2)Amazon CloudFront - 内容分发网络(CDN)

Amazon CloudFront是一种全球内容交付网络(CDN)服务,可加速您的网站,API,视频内容或其他网络资产的交付。它与其他Amazon Web Services产品集成,为开发人员和企业提供了一种简单的方法,可以在没有最低使用承诺的情况下为最终用户加速内容。

  

CloudFront准备文件并将文件传送到播放器

相关链接: -

using-amazon-cloudfront-for-video-streaming

Steps to setup the video streaming

答案 1 :(得分:3)

我首先要澄清一下,“流媒体”在技术上与“播放视频”(渐进式下载)有所不同。因此,显示来自S3的视频并不是真正的“流式传输”。那是“渐进式下载”。

如果要进行HLS流传输,则不能仅使用S3来实现。

您需要:S3 + CloudFront + MediaConvert。

MediaConvert会将您的mp4转换为m3u8(播放列表)和一堆.ts文件(段)。您还可以在提交给MediaConvert时对流进行加密。然后,您可以使用VideoJS之类的播放器来播放视频-它甚至可以与加密的视频流一起使用。

-拉维·贾亚戈帕尔(Ravi Jayagopal)

https://S3MediaVault.com

答案 2 :(得分:0)

一个人可以结合使用这里描述的方法:

https://github.com/davidgatti/How-to-Stream-Movies-using-NodeJS

S3的“ Range”参数用于从S3获取块。我能够使用这些方法重现视频流。它可能不是性能最高的。