本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 容器提供内容
-
按照允许 Amazon CloudFront 访问您的AWS Elemental MediaStore容器中的步骤操作,然后返回这些步骤来创建您的配送。
-
使用以下设置创建分配:
- 源域
-
分配给您的 MediaStore 容器的数据端点。从下拉列表中,选择直播视频的 MediaStore 容器。
- 源路径
-
存储对象的 MediaStore 容器中的文件夹结构。有关更多信息,请参阅源路径。
- 添加自定义标头
-
如果您想在将请求转发 CloudFront 到您的源时添加自定义标头,请添加标头名称和值。
- 查看器协议策略
-
选择 Redirect HTTP to HTTPS (将 HTTP 重定向到 HTTPS)。有关更多信息,请参阅 查看器协议策略。
- 缓存策略和源请求策略
-
对于缓存策略,选择创建策略,然后创建一个适合您的缓存需求和分段持续时间的缓存策略。在创建策略后,刷新缓存策略列表,然后选择您刚创建的策略。
对于 Origin 请求策略,请CustomOrigin从下拉列表中选择 CORS-。
对于其他设置,您可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息,请参阅您创建或更新分配时指定的值。
-
对于应用程序中的链接(例如媒体播放器),请指定媒体文件的名称,其格式与用于分发的其他对象的格式相同 CloudFront。
提供使用 AWS Elemental MediaPackage 格式化的实时视频
如果您已使用 AWS Elemental MediaPackage 设置实时流格式,您可以创建一个 CloudFront 分配,并配置缓存行为以提供实时流。以下过程假设您已经使用创建频道并为直播视频添加了端点 MediaPackage。
要 MediaPackage 手动创建 CloudFront 分配,请执行以下步骤:
步骤
步骤 1:创建和配置分 CloudFront 发
完成以下步骤,为使用创建的直播视频频道设置 CloudFront 分发 MediaPackage。
为您的实时视频通道创建分配
登录AWS Management Console并打开 CloudFront 控制台,网址为https://console.aws.amazon.com/cloudfront/v4/home
。 -
选择创建分配。
-
选择用于分配的设置,包括以下内容:
- 源域
-
您的 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 分配中的某个位置进行路由。为防止与显式路径不匹配的请求路由到真实源,请为该通配符路径创建“虚拟”源。例 :创建“虚拟”源
在以下示例中,端点
abc123
和def456
路由到“真实”源,但对任何其他端点的视频内容的请求会路由到没有正确子域的mediapackage.us-west-2.amazonaws.com
,这会导致 HTTP404
错误。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
对于其他分配设置,可以基于其他技术要求或您企业的需求设置特定值。有关分配的所有选项的列表以及有关设置这些选项的信息,请参阅您创建或更新分配时指定的值。
完成选择其他分配设置后,请选择创建分配。
-
选择刚刚创建的分配,然后选择行为。
-
选择默认缓存行为,然后选择编辑。为您选择作为源的通道指定正确的缓存行为设置。稍后,您将添加一个或多个其他源,并为其编辑缓存行为设置。
-
等待,直到分配的 “上次修改时间” 列的值从 “部署” 更改为日期和时间,表示您的分配 CloudFront 已创建。
第 2 步:为 MediaPackage 终端节点的域名添加起源
请重复此处的步骤,将每个 MediaPackage 频道端点添加到您的分配中,同时记住需要创建 “虚拟” 来源。
将其它端点作为源进行添加
-
在 CloudFront 控制台上,选择您为频道创建的发行版。
-
选择源,然后选择创建源。
-
对于 Origin 域名,在下拉列表中,为您的频道选择一个MediaPackage 终端节点。
-
对于其他设置,可以基于其他技术要求或您企业的需求设置值。有关更多信息,请参阅 源设置。
-
选择创建源。
步骤 3:配置所有端点的缓存行为
对于每个端点,您必须配置缓存行为,以添加可正确路由请求的路径模式。您指定的路径模式取决于您提供的视频格式。以下过程包括用于 Apple HLS、CMAF、DASH 和 Microsoft Smooth Streaming 格式的路径模式信息。
您通常为每个端点设置两个缓存行为:
-
父清单文件,这是您文件的索引。
-
分段,它们是视频内容的文件。
为端点创建缓存行为
-
在 CloudFront 控制台上,选择您为频道创建的发行版。
-
选择行为,然后选择创建行为。
-
对于路径模式,请使用特定的 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/*
。 -
-
对于每个缓存行为,指定以下设置的值:
- 查看器协议策略
-
选择将 HTTP 重定向到 HTTPS。
- 缓存策略和源请求策略
-
对于缓存策略,选择创建策略。对于新的缓存策略,请指定以下设置:
- 最小 TTL
-
设置为 5 秒或更短,以帮助防止提供过期内容。
- 查询字符串
-
对于查询字符串(在缓存键设置中),选择包括指定的查询字符串。对于允许,添加以下值,方法是键入这些值,然后选择添加项目:
-
将要
m
CloudFront 用作缓存基础的查询字符串参数添加。 MediaPackage 响应始终包含用于捕?m=###
获端点修改时间的标签。如果已经使用此标签的不同值缓存了内容,则会 CloudFront 请求新的清单,而不是提供缓存的版本。 -
如果您在中使用时移查看功能 MediaPackage,请指定
start
和end
作为清单请求缓存行为的附加查询字符串参数(*.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 屏蔽播放列表请求功能起作用所必需的。
-
-
选择创建。
-
创建缓存策略后,返回到缓存行为创建工作流。刷新缓存策略列表,然后选择您刚创建的策略。
-
选择创建行为。
-
如果端点不是 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。