使用 CloudFront 和Amazon媒体服务提供直播视频 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

要使用Amazon媒体服务 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 将实时流视频分发到查看器。

提示

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

使用 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. 登录Amazon Web Services Management Console并打开 CloudFront 控制台,网址为https://console.amazonaws.cn/cloudfront/v4/home

  2. 选择创建分配

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

    源域

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

    如果您已使用另一个 Amazon 账户创建源域,则在此字段中键入源 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