【问题标题】:How to sign an RTMP url for Amazon CloudFront如何为 Amazon CloudFront 签署 RTMP URL
【发布时间】:2016-07-20 12:10:51
【问题描述】:

我正在尝试在 Amazon 的 CloudFront 中为 RTMP 分发创建签名 URL。我有以下工作:

  • 用于 Web 分发的签名 URL(通过 httphttps) - 所以我知道我能够正确签名 URL。
  • 用于 RTMP 分发的未签名 URL - 所以我知道我已经为 RTMP 正确设置了 CloudFront 和 S3。

主要问题 - 现在我正在尝试为 RTMP 获取 签名 url,它似乎永远无法播放。

部分混淆是基于 url 的格式(类似于this question)。所以我不知道我签署网址的哪一部分是否重要 - 如果我签署整个事情(如我的 http url),或者我只签署一部分,以及我是否在路径中包含 mp4: 前缀.

Stackoverflow 上似乎有很多伪相似的问题,但它们似乎与略有不同的问题有关,而不是实际为 RTMP 创建签名的 url。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudfront rtmp


    【解决方案1】:

    不幸的是,RTMP 网址的创建方式有很多变体,其中 造成很大一部分混乱。以下是我能够使其与 Amazon CloudFront 一起使用的方式。需要明确的是,这是在 *.SMIL 文件中使用的,因此如果您只需要一个 url,它可能会有所不同。

    1. S3ObjectSummary 对象的文件有一个key,可能类似于folder1/folder2/video.mp4
    2. 使用上述密钥,删除.mp4 扩展名。
    3. 正常签名网址(我使用CloudFrontService.signUrlCanned()
    4. 在生成的*.smil文件中,将base引用设置为rtmp://<CloudFront RTMP Distribution Domain>/cfx/st
    5. video 元素中,设置heightwidth,并在src 属性中,将mp4: 添加到签名的url 部分。

    这是一个示例 SMIL 文件。

    <smil data-livestyle-extension="available">
        <head>
            <meta base="rtmp://some-cloud-front-domain.net/cfx/st"/>
        </head>
        <body>
            <switch>
                <video height="720" width="1280" src="mp4:<signed portion of video path>" />
                <video height="480" width="853" src="mp4:<signed portion of video path>" />
            </switch>
        </body>
    </smil>
    

    【讨论】:

      【解决方案2】:

      使用 Python/boto3,我已成功使用 rsa_signer 签署媒体文件

      http://boto3.readthedocs.io/en/latest/reference/services/cloudfront.html#generate-a-signed-url-for-amazon-cloudfront

      仅对媒体文件的路径进行签名。

      假设您要流式传输位于“videos/test.mp4”的 S3 存储桶媒体文件 按照上面链接中的 boto3 示例,您可以执行以下操作来使用 flowplayer 提供文件:

      signed_url = cloudfront_signer.generate_presigned_url(
          'videos/test.mp4', date_less_than=expire_date)
      

      然后在flowplayer代码中(Django模板语法):

      <div class="flowplayer fp-slim" data-rtmp="rtmp://{{cloudfront_domain_prefix}}.cloudfront.net:1935/cfx/st">
         <video>
           <source type="video/flash" src="mp4:{{signed_src}}">
         </video>
      </div>
      

      【讨论】:

        猜你喜欢
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 1970-01-01
        • 2019-08-16
        • 2016-03-28
        • 2015-06-05
        • 2016-12-06
        相关资源
        最近更新 更多