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

使用 CloudFront 和 Amazon Media Services 提供实时流视频

要将 Amazon Media Services 与 CloudFront 配合用于向全球观众传输实时内容,请遵循本部分包含的指导。

使用 AWS Elemental MediaLive 实时对视频流进行编码。要对大型视频流进行编码,MediaLive 将其压缩为可分配给查看器的较小版本(编码)。

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

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

  • 使用可扩展源存储和提供内容:如果 MediaLive 对内容进行编码的格式是查看者所用的所有设备所需的格式,则使用高度可扩展的源(如 AWS Elemental MediaStore)来提供内容。有关使用 CloudFront 提供存储在 MediaStore 容器中的内容的分步说明,请参阅将 AWS Elemental MediaStore 作为源提供视频

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

提示

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

将 AWS Elemental MediaStore 作为源提供视频

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

要开始操作,您可以授予 CloudFront 对您的 MediaStore 容器的访问权限。然后,您创建一个 CloudFront 分配,并将其配置为使用 MediaStore。

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

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

    源域

    分配到您的 MediaStore 容器的数据终端节点。从下拉列表中,选择用于您的实时视频的 MediaStore 容器。

    源路径

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

    添加自定义标头

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

    查看器协议策略

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

    缓存策略和源请求策略

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

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

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

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

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

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

注意

您可以选择在 MediaPackage 中保存通道时自动创建 CloudFront 分配,而不是使用以下过程。有关更多信息,请参阅《AWS Elemental MediaPackage 用户指南》中的从 AWS Elemental MediaPackage 创建分配

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

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

完成以下步骤,以便为您使用 MediaPackage 创建的实时视频通道设置 CloudFront 分配。

为您的实时视频通道创建分配
  1. 登录 Amazon Web Services Management Console,并通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v3/home

  2. 选择创建分配

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

    源域

    您的 MediaPackage 实时视频通道和终端节点所在的源。选择文本字段,然后从下拉列表中为您的实时视频选择 MediaPackage 通道。您可将一个通道映射到多个源终端节点。

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

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

    源路径

    从中提供内容的 MediaPackage 终端节点的路径。选择源域名时,CloudFront 填充源路径。

    如果您将其他 Amazon 账户中的通道用于源域,则系统不会为您填写源路径字段。您必须从其他账户获取正确的源路径,以便您可以手动输入它。

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

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

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

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

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

  6. 转到 CloudFront 分配页面

  7. 等到分配的上次修改时间列的值从正在部署变为某个日期和时间后,即表示 CloudFront 已创建您的分配。

步骤 2:添加其他终端节点作为源

重复此处的步骤,将您的每个 MediaPackage 通道终端节点添加到您的分配。

将其他终端节点作为源进行添加
  1. 在 CloudFront 控制台上,选择您为通道创建的分配。

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

  3. 对于源域,请在下拉列表中,为您的通道选择一个 MediaPackage 终端节点。CloudFront 会自动填写源路径字段。

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

  5. 选择创建源

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

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

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

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

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

为终端节点创建缓存行为
  1. 在 CloudFront 控制台上,选择您为通道创建的分配。

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

  3. 对于路径模式,为每个终端节点类型键入以下指南中指示的第一个模式。例如,对于 DASH 终端节点,请键入 *.mpd

    路径模式

    对于 HLS 终端节点,创建以下两个缓存行为:

    • 对于父清单和子清单,请使用 *.m3u8

    • 对于内容段,请使用 *.ts

    对于 CMAF 终端节点,创建以下两个缓存行为:

    • 对于父清单和子清单,请使用 *.m3u8

    • 对于内容段,请使用 *.mp4

    对于 DASH 终端节点,创建以下两个缓存行为:

    • 对于父清单,请使用 *.mpd

    • 对于内容段,请使用 *.mp4

    对于 Microsoft 平滑流终端节点,仅提供清单文件,因此仅创建一个缓存行为:index.ism/*

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

    查看器协议策略

    选择将 HTTP 重定向到 HTTPS

    缓存策略和源请求策略

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

    最小 TTL

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

    查询字符串

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

    • m 添加为您希望 CloudFront 用作缓存基础的查询字符串参数。MediaPackage 响应始终包含标签 ?m=###,以捕获终端节点的修改时间。如果内容已使用此标签的不同值进行缓存,CloudFront 会请求新的清单文件,而不提供此缓存版本。

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

    • 如果您在 MediaPackage 中使用清单筛选功能,请针对您要与清单请求(aws.manifestfilter*.m3u8*.mpd)的缓存行为结合使用的缓存策略,将 index.ism/* 指定为额外的查询字符串参数。这会将您的分配配置为将 aws.manifestfilter 查询字符串转发到您的 MediaPackage 源,需要此字符串才能使用清单筛选功能。有关更多信息,请参阅《AWS Elemental MediaPackage 用户指南》中的清单筛选

  5. 选择创建

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

  7. 选择创建行为

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

步骤 4:使用 CloudFront 为实时流频道提供服务

创建分配、添加源并创建缓存行为之后,您可以使用 CloudFront 提供实时流通道。CloudFront 根据您为缓存行为配置的设置,将来自查看器的请求路由到正确的 MediaPackage 终端节点。

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