通过AWS CloudFront进行HTTP直播流传输

10

想知道是否有人能够使用签名URL通过AWS Cloudfront流式传输HLS视频。

我的经验是,这是不可能的。AWS文档不清楚。AWS论坛沉默无声。

我似乎可以获取第一个文件(.m3u8),然后它停止了。使用JW播放器,报错无法获取媒体文件。

如果答案是肯定的,请指引我正确的方向。

谢谢。

4个回答

15

使用未签名的URL场景肯定有效。我已经成功地使用FFmpeg将视频流分割到S3上并从CF中提供服务。毕竟,它都是HTTP。

如果您希望限制对HLS内容的访问,则您的播放列表文件也需要包含签名URL。通常当播放列表被请求时,您会根据要用于验证用户的凭据计算这些URL。因此,您需要一个服务器端的实现来为您生成会话唯一的m3u8,以便签名URL方案具有意义。

根据您的需求,另一个选择是研究DRM。JW Player 支持单个/旋转密钥片段解密,这可能是一种更复杂的解决方案。然后,您需要考虑如何安全地分发解密密钥给客户端。

我希望这个回答可以在一定程度上解决您的疑虑。如果没有,请随时留言。


请注意,现在可以使用签名 cookie 实现此操作,从而消除了对签名 TS URL 的需求。将其纳入上面的答案并标记为已接受会很好。 - alexjs

3
在以下情况下使用签名URL:
  • 您想要使用RTMP分发。对于RTMP分发,不支持使用签名cookie。
  • 您想要限制对单个文件的访问,例如应用程序安装下载。
  • 您的用户使用不支持cookie的客户端(例如自定义HTTP客户端)。
在以下情况下使用签名cookie:
  • 您想要提供对多个受限文件的访问,例如所有以HLS格式播放的视频文件或网站订阅区域中的所有文件。
  • 您不想更改当前的URL。
了解更多信息: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html

1
根据这篇文章,CloudFront支持HLS。我目前正在尝试使用Flowplayer和HTML5视频在我的网站上实现此功能。一旦它运行起来,我会更新这个答案。亚马逊网络服务网站也对HLS支持有所提及,尽管它似乎不像rtmp方法那样整洁。

你已经实现了它吗? - Ashish

-2

根据CloudFront对其流媒体的描述:

预录制媒体的流式传输:您可以通过Amazon CloudFront使用Adobe的实时消息传递协议(RTMP)流式传输来传递您的点播媒体。您将媒体文件的原始副本存储在Amazon S3中,并使用Amazon CloudFront以低延迟传递您的媒体内容。 Amazon CloudFront与Amazon S3集成,因此您可以通过进行简单的API调用或在AWS管理控制台中点击几下来配置媒体流式传输。当使用Amazon CloudFront时,您还可以从高吞吐量传递媒体中受益,因此您可以向观众以全高清质量提供内容。

简短的回答是基本上不行。从CloudFront进行流媒体传输需要使用RTMP。

链接:http://aws.amazon.com/cloudfront/

话虽如此,AWS的弹性转码器可以生成HLS文件集和播放列表,而这些可以从CloudFront提供服务。因此,答案变成“如果您能够完成/找到解决方法,则可以”。

这里有一个链接,告诉你如何操作:http://aws.amazon.com/elastictranscoder/faqs/#Can_I_get_segmented_output_for_HTTP_Live_Streaming_(HLS)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接