使用 CloudFront 和AWS媒体服务提供直播视频 - Amazon CloudFront

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 CloudFront 和AWS媒体服务提供直播视频

要使用AWS媒体服务 CloudFront 向全球受众提供直播内容,请遵循本节中包含的指南。

使用 AWS Elemental MediaLive 实时编码实时视频流。要对大型视频流进行编码,请将其 MediaLive 压缩成较小的版本(编码),然后分发给您的观众。

压缩实时视频流后,您可以使用以下两个主要选项之一来准备和提供内容:

  • 将内容转换为所需的格式,然后提供内容:如果您需要多种格式的内容,请使用 AWS Elemental MediaPackage 针对不同设备类型打包内容。当您打包内容时,您还可以实施额外的特征并添加数字版权管理 (DRM),以防止未经授权使用您的内容。有关使用 CloudFront 提供 MediaPackage 格式化内容的 step-by-step 说明,请参阅提供使用 AWS Elemental MediaPackage 格式化的实时视频

  • 使用可扩展的来源存储和提供您的内容:如果对内容的 MediaLive 编码格式符合观看者使用的所有设备所要求的格式,请使用高度可扩展的来源AWS Elemental MediaStore来提供内容。有关使用 CloudFront 来提供存储在 MediaStore 容器中的内容的 step-by-step 说明,请参阅使用 AWS Elemental MediaStore 作为源来提供视频

使用上述选项之一设置源之后,您可以使用 CloudFront 将实时流视频分发到查看器。

提示

您可以了解 AWS 解决方案,该解决方案可自动部署服务以构建高度可用的实时查看体验。要查看自动部署此解决方案的步骤,请参阅实时流式自动化部署

使用 AWS Elemental MediaStore 作为源来提供视频

如果您将视频存储在AWS Elemental MediaStore容器中,则可以创建 CloudFront 分配来提供内容。

首先,您需要授予对 MediaStore 容器的 CloudFront 访问权限。然后创建CloudFront 发行版并将其配置为可用 MediaStore。

从 AWS Elemental MediaStore 容器提供内容
  1. 按照允许 Amazon CloudFront 访问您的AWS Elemental MediaStore容器中的步骤操作,然后返回这些步骤来创建您的配送。

  2. 使用以下设置创建分配:

    源域

    分配给您的 MediaStore 容器的数据端点。从下拉列表中,选择直播视频的 MediaStore 容器。

    源路径

    存储对象的 MediaStore 容器中的文件夹结构。有关更多信息,请参阅源路径

    添加自定义标头

    如果您想在将请求转发 CloudFront 到您的源时添加自定义标头,请添加标头名称和值。

    查看器协议策略

    选择 Redirect HTTP to HTTPS (将 HTTP 重定向到 HTTPS)。有关更多信息,请参阅 查看器协议策略

    缓存策略和源请求策略

    对于缓存策略,选择创建策略,然后创建一个适合您的缓存需求和分段持续时间的缓存策略。在创建策略后,刷新缓存策略列表,然后选择您刚创建的策略。

    对于 Origin 请求策略,请CustomOrigin从下拉列表中选择 CORS-

    对于其他设置,您可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息,请参阅您创建或更新分配时指定的值

  3. 对于应用程序中的链接(例如媒体播放器),请指定媒体文件的名称,其格式与用于分发的其他对象的格式相同 CloudFront。

提供使用 AWS Elemental MediaPackage 格式化的实时视频

如果您已使用 AWS Elemental MediaPackage 设置实时流格式,您可以创建一个 CloudFront 分配,并配置缓存行为以提供实时流。以下过程假设您已经使用创建频道并为直播视频添加了端点 MediaPackage。

要 MediaPackage 手动创建 CloudFront 分配,请执行以下步骤:

步骤 1:创建和配置分 CloudFront 发

完成以下步骤,为使用创建的直播视频频道设置 CloudFront 分发 MediaPackage。

为您的实时视频通道创建分配
  1. 登录AWS Management Console并打开 CloudFront 控制台,网址为https://console.aws.amazon.com/cloudfront/v4/home

  2. 选择创建分配

  3. 选择用于分配的设置,包括以下内容:

    源域

    您的 MediaPackage 直播视频频道和终端所在的来源。选择文本字段,然后从下拉列表中选择直播视频的 MediaPackage 源域名。您可将一个域映射到多个源端点。

    如果您已使用另一个 AWS 账户创建源域,则在此字段中键入源 URL 值。源必须是 HTTPS URL。

    例如,对于像 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 这样的 HLS 端点,源域是 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com

    有关更多信息,请参阅源域

    源路径

    提供内容的 MediaPackage 终端节点的路径。

    未为您填写源路径字段。必须手动输入正确的源路径。

    有关源路径如何工作的更多信息,请参阅源路径

    重要

    需要使用通配符路*径才能在 CloudFront 分配中的某个位置进行路由。为防止与显式路径不匹配的请求路由到真实源,请为该通配符路径创建“虚拟”源。

    例 :创建“虚拟”源

    在以下示例中,端点 abc123def456 路由到“真实”源,但对任何其他端点的视频内容的请求会路由到没有正确子域的 mediapackage.us-west-2.amazonaws.com,这会导致 HTTP 404 错误。

    MediaPackage 端点:

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/def456/index.m3u8

    CloudFront 起源 A:

    Domain: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Path: None

    CloudFront 起源 B:

    Domain: mediapackage.us-west-2.amazonaws.com Path: None

    CloudFront 缓存行为:

    1. Path: /out/v1/abc123/* forward to Origin A 2. Path: /out/v1/def456/* forward to Origin A 3. Path: * forward to Origin B

    对于其他分配设置,可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息,请参阅您创建或更新分配时指定的值

    完成选择其他分配设置后,请选择创建分配

  4. 选择刚刚创建的分配,然后选择行为

  5. 选择默认缓存行为,然后选择编辑。为您选择作为源的通道指定正确的缓存行为设置。稍后,您将添加一个或多个其他源,并为其编辑缓存行为设置。

  6. 转到CloudFront 发行版页面

  7. 等待,直到分配的 “上次修改时间” 列的值从 “部署” 更改为日期和时间,表示您的分配 CloudFront 已创建。

第 2 步:为 MediaPackage 终端节点的域名添加起源

请重复此处的步骤,将每个 MediaPackage 频道端点添加到您的分配中,同时记住需要创建 “虚拟” 来源。

将其它端点作为源进行添加
  1. 在 CloudFront 控制台上,选择您为频道创建的发行版。

  2. 选择,然后选择创建源

  3. 对于 Origin 域名,在下拉列表中,为您的频道选择一个MediaPackage 终端节点。

  4. 对于其他设置,可以基于其他技术要求或您企业的需求设置值。有关更多信息,请参阅 源设置

  5. 选择创建源

步骤 3:配置所有端点的缓存行为

对于每个端点,您必须配置缓存行为,以添加可正确路由请求的路径模式。您指定的路径模式取决于您提供的视频格式。以下过程包括用于 Apple HLS、CMAF、DASH 和 Microsoft Smooth Streaming 格式的路径模式信息。

您通常为每个端点设置两个缓存行为:

  • 父清单文件,这是您文件的索引。

  • 分段,它们是视频内容的文件。

为端点创建缓存行为
  1. 在 CloudFront 控制台上,选择您为频道创建的发行版。

  2. 选择行为,然后选择创建行为

  3. 对于路径模式,请使用特定的 MediaPackage OriginEndpoint GUID 作为路径前缀。

    路径模式

    对于像 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 这样的 HLS 端点,创建以下两个缓存行为:

    • 对于父清单和子清单,请使用 /out/v1/abc123/*.m3u8

    • 对于内容段,请使用 /out/v1/abc123/*.ts

    对于像 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 这样的 CMAF 端点,创建以下两个缓存行为:

    • 对于父清单和子清单,请使用 /out/v1/abc123/*.m3u8

    • 对于内容段,请使用 /out/v1/abc123/*.mp4

    对于像 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.mpd 这样的 DASH 端点,创建以下两个缓存行为:

    • 对于父清单,请使用 /out/v1/abc123/*.mpd

    • 对于内容段,请使用 /out/v1/abc123/*.mp4

    对于像 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.ism 这样的 Microsoft Smooth Streaming 端点,仅提供清单文件,因此仅创建一个缓存行为:out/v1/abc123/index.ism/*

  4. 对于每个缓存行为,指定以下设置的值:

    查看器协议策略

    选择将 HTTP 重定向到 HTTPS

    缓存策略和源请求策略

    对于缓存策略,选择创建策略。对于新的缓存策略,请指定以下设置:

    最小 TTL

    设置为 5 秒或更短,以帮助防止提供过期内容。

    查询字符串

    对于查询字符串(在缓存键设置中),选择包括指定的查询字符串。对于允许,添加以下值,方法是键入这些值,然后选择添加项目

    • 将要m CloudFront 用作缓存基础的查询字符串参数添加。 MediaPackage 响应始终包含用于捕?m=###获端点修改时间的标签。如果已经使用此标签的不同值缓存了内容,则会 CloudFront 请求新的清单,而不是提供缓存的版本。

    • 如果您在中使用时移查看功能 MediaPackage,请指定startend作为清单请求缓存行为的附加查询字符串参数(*.m3u8*.mpd、和index.ism/*)。通过这种方式,可根据清单文件请求中要求的时段提供该内容。有关时移查看功能和格式化内容开始和结束请求参数的更多信息,请参阅《AWS Elemental MediaPackage 用户指南》中的时移查看

    • 如果您在中使用清单筛选功能 MediaPackage,请指定aws.manifestfilter作为缓存策略的附加查询字符串参数,该参数用于清单请求的缓存行为(*.m3u8*.mpd、和index.ism/*)。这会将您的分配配置为将aws.manifestfilter查询字符串转发到您的 MediaPackage 来源,这是清单筛选功能正常运行所必需的。有关更多信息,请参阅《AWS Elemental MediaPackage 用户指南》中的清单筛选

    • 如果您使用的是低延迟 HLS(LL-HLS),请指定 _HLS_msn_HLS_part 作为缓存策略的附加查询字符串参数,用于清单请求的缓存行为(*.m3u8)。这会将您的分发配置为将_HLS_msn_HLS_part查询字符串转发到您的MediaPackage 来源,这是 LL-HLS 屏蔽播放列表请求功能起作用所必需的。

  5. 选择创建

  6. 创建缓存策略后,返回到缓存行为创建工作流。刷新缓存策略列表,然后选择您刚创建的策略。

  7. 选择创建行为

  8. 如果端点不是 Microsoft Smooth Streaming 端点,请重复这些步骤以创建第二个缓存行为。

步骤 4:启用基于标头的 CDN MediaPackage 授权

我们建议在 MediaPackage端点和分发之间启用基于标头的 MediaPackage CDN 授权。 CloudFront 有关更多信息,请参阅《AWS Elemental MediaPackage用户指南》 MediaPackage中的启用 CDN 授权

第 5 步:用于CloudFront 为直播频道提供服务

在创建分发、添加来源、创建缓存行为并启用基于标头的 CDN 授权后,您可以使用为直播频道提供服务。 CloudFront CloudFront 根据您为缓存行为配置的设置,将来自查看者的请求路由到正确的MediaPackage 终端节点。

对于应用程序中的链接(例如媒体播放器),请按标准格式为 URL 指定媒体文件的 CloudFront URL。有关更多信息,请参阅 自定义中文件的 URL 格式 CloudFront