【问题标题】:AWS Cloudfront Streaming with signed URLs带有签名 URL 的 AWS Cloudfront 流式传输
【发布时间】:2013-01-15 19:49:11
【问题描述】:

我已经设置了一个带有下载和流式分发的云端实例。我使用签名的网址将两者都设置为私有。我能够获得适用于带有签名网址的图像的下载分发的示例代码。我现在正在尝试让带有签名 URL 的 JW Player 的流媒体分发工作,但我遇到了问题。

这是我签名的 URL 格式: RTMP://s1iq2cbtodqqky.cloudfront.net/2012-08-31_13-24-01_534.mp4过期= 1359648770&签名= Oi8RwL4Nf338NldW2uIsqFIv3zHnJkxXYbXIiVQh〜J0Iq4kb00Ly5MLTgJw〜87KmlUOmilmdRHy7p〜UxeGYQxgkewPI11r27se0b〜hTvpxq9y9Z5C-B-A58ZnngaCi9G2SHAujMzvss7ynLLEqUV3M6MVZl1qCxyfJbLdxCIEMY_&密钥对-ID = P>

这是我的 JW Player 代码:

<script type="text/javascript" src="jwplayer/jwplayer.js"></script>
<div id="container">Loading the player ...</div>
<script type="text/javascript">
jwplayer("container").setup({
'flashplayer': 'jwplayer/jwplayer.flash.swf',
'file': '<?= $canned_policy_stream_name ?>',
'width': '480','height': '270',
'provider': 'rtmp',
'streamer': 'rtmp://s1iq2cbtodqqky.cloudfront.net/cfx/st/'

});
</script>

有人知道这里有什么问题吗?如何单独测试 url?现在很难判断问题是 url 还是 JW Player 集成的代码。

-J

【问题讨论】:

  • 注意:我删除了 Key Paid Id,我收到的错误是 Error loading player: No playable sources found
  • 你有链接指向问题发生的地方吗?
  • 嗨,我已经让播放器在没有签署网址的情况下工作。嵌入代码如下。
  • 我现在无法获得适用于上述嵌入的签名网址。我得到签名的网址适用于未编码的图像,但是当我签署上面的网址并尝试它时它不起作用。
  • 这里是签名 URL 的示例:rtmp://s1iq2cbtodqqky.cloudfront.net:1935/cfx/st/2012-05-26_12-17-55_73.mp4?Expires=1359678105&Signature=iv5ICtu5o4M3t8eMzFpNPqOf0 -41EFgZcy7J62qfeteDynvxQq6InkHYzA-05sMiWJLBZ5yALy2trq3F~oaG89irzFXyMupbpELqpvkESUCz08SCUMmnKBq37kqMHf4rXHdNICq-DJzXlxZiDXKWsK5m25I3sdGrxHNZoo44aDE_22B盘-JID=APKAJC6

标签: amazon-s3 jwplayer amazon-cloudfront


【解决方案1】:

这里有很多问题。当我进入它时,我花了一段时间来完成它们。以下是我认为可能对很多人有帮助的一些步骤。

首先是我使用的技术堆栈:

  • Rails 3.x
  • Zencoder 编码
  • 用于文件上传的回形针
  • 用于上传的 Jquery Uload
  • JWPlayer

如果这不是你的平台,你可以填补一些空白,但很多学习对你仍然有用。

有很多关于如何将内容从用户上传到 S3 的文章,所以我将跳过该部分,有趣的部分是当您开始编码过程时,这确实是问题开始的地方在 jwplayer 或 flowplayer 中播放签名的流式内容。

首先,文件格式 - 我发现 MP4 和 M4A 是我最成功的文件格式。使用 zencoder,我能够使用开箱即用的 mp4 和 m4a 导出格式并让这些输出正常播放。

  1. 在设置云端分发之前将您的 zencoder 策略添加到存储桶中。
  2. 如果您已经配置了 cloudfront,则应小心将 zencoder 存储桶策略添加到存储桶中,并确保将其与现有内容合并。 Cloudfront 还将内容放入存储桶策略中,您需要这个和 zencoder 存储桶策略配置文件才能正常工作。

  3. 存储桶策略仅适用于存储桶所有者拥有的文件,因此请务必与您的编码提供商联系,以确保他们使用您的访问密钥将文件放入云端。如果您没有让用户像在 S3 中拥有该文件的用户那样进行签名,它将无法正常工作,您将花费数小时想知道为什么

  4. 一旦您确定您的存储桶设置正确,在进一步使用此工具来帮助验证您的文件是否会实际流式传输(开始时没有签名的 url 并允许云端流式传输未流式传输的文件。如果那不是不工作你不会走远)。

    http://d1k5ny0m6d4zlj.cloudfront.net/diag/CFStreamingDiag.html

    要使用亚马逊工具,如果您的 rtmp 网址是:

    “rtmp://s3b78u0kbtx79q.cloudfront.net/cfx/st/content/myfile.png”

    对于您要输入的流媒体网址:

    s3b78u0kbtx79q.cloudfront.net

    对于您要输入的视频文件名:

    content/myfile.png(没有前导'/')

  5. 一旦您可以通过诊断工具从亚马逊流式传输您的文件,现在继续执行您从 flowplayer 的 jwplayer 执行的任何步骤。

  6. 关于在流式传输时设置 JWPlayer(我遇到的问题最少)的说明 - 还要安装调试版本的 flash。现在在调试期间,您可以右键单击闪存控件并将日志记录更改为“控制台”。现在你会从出现在 Firebug 中的 flash 控件中得到任何加载错误 - 所以可能先用 Firefox 进行测试。通常,在查看这些日志时,您不希望任何 html 控制字符被转义,转义通常会毁了您的一天。

  7. 我想很多这样做的人会希望他们的内容安全并使用签名的 url(这样可疑的其他人就不会只是撕掉您的 rtmp 路径并将其直接嵌入到他们的网站中,而在您付款的同时获得好处带宽)。我怎么强调都不为过,在开始这条路之前,请确保您首先让您的 RTMP 流在您的云端存储桶中的公共流文件上播放,这样您就知道该机制正在运行。

    李>
  8. 如果你已经走到了这一步,那么你是在一个好地方,但现在是所有错误都可以攻击你的时候,如果你遵循我上面的建议,那将比你错过其中一个步骤(比如确保您的存储桶策略包含您的云端原始 ID,并且您的编码提供商使用您的规范 ID 作为所有者而不是他们的所有者写入文件。

  9. 现在您已经通过 RTMP 将内容流式传输到播放器,接下来您需要使用签名的 URL(同样,因此其他网站不能只复制您的 RTMP 路径并通过他们自己的网站播放) jwplayer 附加)。至少在 Rails 中,生成签名 url 的最好方法是使用这个 gem:

    https://github.com/58bits/cloudfront-signer

    根据您嵌入 url 的方式,您将需要使用不同类型的转义。如果您的 URL 无法播放,请尝试以下操作(不是很精确,但如果您在这里并且正在掉头发,您会尝试任何方法,如果您已经尝试过让这个工作,您可能已经知道我的意思并且不会暂时需要理发):

<%=  AWS::CF::Signer.sign_path 'path/to/my/content', :expires => Time.now + 600 %>
<%=raw AWS::CF::Signer.sign_path 'path/to/my/content', :expires => Time.now + 600 %>

<%=  AWS::CF::Signer.sign_path_safe 'path/to/my/content', :expires => Time.now + 600 %>
<%=raw AWS::CF::Signer.sign_path_safe 'path/to/my/content', :expires => Time.now + 600 %>

在我发现使用 raw 可以解决我所有的问题之前,我可能搞砸了一个小时。

【讨论】:

  • 关于第 3 点,对于 zencoder:这是通过在您的 zencoder 帐户配置文件中设置您的访问密钥 ID 和秘密访问密钥来实现的。
  • “确保您首先让您的 RTMP 流在您的云端存储桶中的公共流文件上播放,这样您就知道该机制正在工作。”。非常中肯的建议。现在我有第一部分工作。到下一个。
猜你喜欢
  • 2015-10-10
  • 2017-10-03
  • 2016-12-11
  • 2021-03-22
  • 2012-10-31
  • 2017-08-18
  • 2015-09-20
  • 2013-11-21
  • 2019-08-30
相关资源
最近更新 更多