使用 CDN 集成流式传输内容
警告
Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南。
重要
由于 Azure 媒体服务将于 2024 年 6 月 30 日停用,Azure CDN 将于 2023 年 10 月 31 日从 Akamai 停用 Azure CDN 标准版, 最好不要创建新的 CDN 以用于 Azure 媒体服务。 请参阅 Azure 媒体服务停用指南。
Azure 内容分发网络(CDN)为开发人员提供了一个全球解决方案,通过在全球战略放置的物理节点缓存其内容,从而快速向用户提供高带宽内容。
CDN 缓存从媒体服务流式传输的内容 流式处理终结点(源) 每个编解码器、每个流式处理协议、每个比特率、每个容器格式和每个加密/DRM。 对于编解码器流式处理协议容器格式比特率加密的每个组合,将有一个单独的 CDN 缓存。
只要缓存视频片段,就可以直接从 CDN 缓存中提供热门内容。 实时内容可能会缓存,因为你通常有很多人观看完全相同的内容。 按需内容可能有点棘手,因为你可能有一些很流行的内容,有些内容不是。 如果你有数百万个视频资产,其中没有一个是受欢迎的(每周只有一两个观众),但你有成千上万的人观看所有不同的视频,CDN 变得不那么有效。
还需要考虑自适应流式处理的工作原理。 每个单独的视频片段都缓存为自己的实体。 例如,假设第一次观看特定视频。 如果查看器只跳过观看了几秒钟左右,则只有与观看者在 CDN 中缓存的内容关联的视频片段。 使用自适应流式处理时,通常有 5 到 7 个不同的视频比特率。 如果一个人正在监视一个比特率,另一个人正在监视不同的比特率,则每个比特率分别缓存在 CDN 中。 即使两个人正在观看相同的比特率,他们也可以通过不同的协议进行流式传输。 每个协议(HLS、MPEG-DASH、平滑流式处理)单独缓存。 因此,将单独缓存每个比特率和协议,只缓存已请求的视频片段。
除了测试环境,我们建议为标准终结点和高级流式处理终结点启用 CDN。 每种流式处理终结点都有不同的支持吞吐量限制。
很难对流式处理终结点支持的最大并发流数进行精确计算,因为需要考虑各种因素。 其中包括:
- 用于流式处理的最大比特率
- 玩家预缓冲和切换行为。 玩家尝试从源突发段,并使用负载速度来计算自适应比特率切换。 如果流式处理终结点接近饱和度,响应时间可能会有所不同,玩家开始切换到较低质量。 由于这减少了流式处理终结点播放器上的负载,因此请缩减到高质量,从而创建不需要的切换触发器。
总的来说,通过获取最大流式处理终结点吞吐量并将其除以最大比特率(假设所有玩家都使用最高比特率),可以安全地估计最大并发流。例如,可以有一个标准流式处理终结点,该终结点限制为 600 Mbps,最高比特率为 3Mbp。 在这种情况下,最高比特率支持大约 200 个并发流。 还记得考虑音频带宽要求。 尽管音频流可能仅以 128 kps 进行流式处理,但在将音频流数乘以并发流数时,总流数会迅速增加。
本主题讨论如何启用 CDN 集成。 它还介绍了预提取(活动缓存)和 Origin-Assist CDN 预提取 概念。
考虑
- 无论是否启用 CDN,流式处理终结点
hostname
和流式处理 URL 保持不变。 - 如果需要使用或不使用 CDN 测试内容的功能,请创建未启用 CDN 的另一个流式处理终结点。
启用 Azure CDN 集成
重要
无法为试用版或学生 Azure 帐户启用 CDN。
除联邦政府和中国区域之外,所有 Azure 数据中心都启用了 CDN 集成。
在启用 CDN 的情况下预配流式处理终结点后,媒体服务上定义了等待时间,然后 DNS 更新才能将流式处理终结点映射到 CDN 终结点。
如果以后想要禁用/启用 CDN,流式处理终结点必须处于 停止 状态。 启动流式处理终结点后,最多可能需要四个小时才能启用 Azure CDN 集成,并且更改在所有 CDN POP 中处于活动状态。 但是,可以启动流式处理终结点和流式处理终结点,而不会中断流式处理终结点。 集成完成后,流将从 CDN 传送。 在预配期间,流式处理终结点将处于 开始 状态,你可能会观察到性能下降。
创建标准流式处理终结点时,默认使用标准 Verizon 对其进行配置。 可以使用 REST API 配置高级 Verizon 或标准 Akamai 提供程序。
Azure 媒体服务与 Azure CDN 的集成在 Verizon
注意
有关 Azure CDN 的详细信息,请参阅 CDN 概述。
确定是否进行了 DNS 更改
可以使用 https://www.digwebinterface.com确定流式处理终结点(流量正定向到 Azure CDN)上的 DNS 更改。 如果在结果中看到 azureedge.net
域名,则流量现在将指向 CDN。
Origin-Assist CDN-Prefetch
CDN 缓存是一个反应过程。 如果 CDN 可以预测将请求的下一个对象,则 CDN 可以主动请求并缓存下一个对象。 通过此过程,可以为所有(或大多数)对象实现缓存命中,从而提高性能。
预提取努力将对象定位在“Internet 边缘”,预计玩家将立即请求对象,从而缩短将对象传送给玩家的时间。
若要实现此目标,流式处理终结点(源)和 CDN 需要以几种方式手动工作:
- 媒体服务源需要具有“智能”(Origin-Assist)来告知 CDN 接下来要预提取的对象。
- CDN 执行预提取和缓存(CDN 预提取部分)。 CDN 还需要有“智能”才能:
- 告知源是预提取还是常规提取
- 处理 404 响应
- 以及避免无限预提取循环的方法
好处
Origin-Assist CDN 预提取 功能的优点包括:
- 预提取通过在播放期间将预期的视频段预先定位到边缘,减少对查看器的延迟,以及改进视频段下载时间,从而提高视频播放质量。 这会导致视频启动时间更快,并降低重置次数。
- 此概念适用于常规 CDN 源方案,不限于媒体。
- Akamai 已将此功能添加到 Akamai 云嵌入(ACE)。
注意
此功能尚不适用于与媒体服务流式处理终结点集成的 Akamai CDN。 但是,它适用于具有预先存在的 Akamai 合同的媒体服务客户,并且需要在 Akamai CDN 与媒体服务源之间进行自定义集成。
工作原理
对于与 Akamai CDN 签订直接合同的客户,可以使用对 Origin-Assist CDN-Prefetch
标头(实时和视频点播流)的 CDN 支持。 此功能涉及 Akamai CDN 与媒体服务源之间的以下 HTTP 标头交换:
HTTP 标头 | 值 | 寄件人 | 接收器 | 目的 |
---|---|---|---|---|
CDN-Origin-Assist-Prefetch-Enabled |
1 (默认值) 或 0 | CDN | 起源 | 若要指示已启用 CDN,请启用 CDN。 |
CDN-Origin-Assist-Prefetch-Path |
例: Fragments(video=14000000000,format=mpd-time-cmaf) |
起源 | CDN | 提供 CDN 的预提取路径。 |
CDN-Origin-Assist-Prefetch-Request |
1 (预提取请求) 或 0 (常规请求) | CDN | 起源 | 若要指示来自 CDN 的请求是预提取请求。 |
若要查看部分标头交换的操作,可以尝试以下步骤:
- 使用 cURL 向音频或视频段或片段的媒体服务源发出请求。 请确保在请求中添加标头
CDN-Origin-Assist-Prefetch-Enabled: 1
。 - 在响应中,应会看到标头
CDN-Origin-Assist-Prefetch-Path
具有相对路径作为其值。
支持的流式处理协议
Origin-Assist CDN-Prefetch
功能支持以下实时流式处理和按需流式处理协议:
- HLS v3
- HLS v4
- HLS CMAF
- DASH (CSF)
- DASH (CMAF)
- 平滑流式处理
常见问题解答
如果预提取路径 URL 无效,以便 CDN 预提取获取 404,该怎么办?
CDN 将仅缓存 404 响应 10 秒(或其他配置的值)。
假设你有一个按需视频。 如果启用了 CDN 预提取,此功能是否意味着客户端请求第一个视频段后,预提取将启动循环以在同一比特率预提取所有后续视频段?
否,CDN 预提取仅在客户端发起的请求/响应后完成。 CDN 预提取永远不会由预提取触发,以避免预提取循环。
Origin-Assist CDN-Prefetch 功能是否始终可用? 如何将其打开/关闭?
此功能默认处于关闭状态。 客户需要通过 Akamai API 启用它。
对于实时传送视频流,如果下一段或片段尚不可用,Origin-Assist 会发生什么情况?
在这种情况下,媒体服务源不会提供
CDN-Origin-Assist-Prefetch-Path
标头,并且不会发生 CDN 预提取。Origin-Assist CDN-Prefetch
如何使用动态清单筛选器?此功能独立于清单筛选器工作。 当下一个片段退出筛选器窗口时,其 URL 仍将通过查看原始客户端清单,然后作为 CDN 预提取响应标头返回。 因此,CDN 将获取从 DASH/HLS/Smooth 清单中筛选出的片段的 URL。 但是,玩家永远不会向 CDN 发出 GET 请求来提取该片段,因为该片段不包含在玩家持有的 DASH/HLS/Smooth 清单中(玩家不知道该片段存在)。
是否可以预提取 DASH MPD/HLS 播放列表/平滑清单?
否、DASH MPD、HLS 主播放列表、HLS 变体播放列表或平滑清单 URL 不会添加到预提取标头。
预提取 URL 是相对的还是绝对的?
虽然 Akamai CDN 允许这两者,但媒体服务源仅提供预提取路径的相对 URL,因为使用绝对 URL 没有明显的好处。
此功能是否适用于受 DRM 保护的内容?
是的,由于此功能在 HTTP 级别工作,因此它不会解码或分析任何段/片段。 它不关心内容是否已加密。
此功能是否适用于服务器端广告插入(SSAI)?
它适用于原始/主要内容(广告插入前的原始视频内容),因为 SSAI 不会更改来自媒体服务源的源内容的时间戳。 此功能是否适用于广告内容取决于广告来源是否支持 Origin-Assist。 例如,如果广告内容也托管在 Azure 媒体服务(相同或单独的来源),则广告内容也将预提取。
此功能是否适用于 UHD/HEVC 内容?
是的。
操作说明、教程和示例
- 如何启用 CDN 优化 -如何启用 Origin Shield
获取帮助和支持
可以通过以下方法之一联系媒体服务,并关注我们的更新:
- Q & A
-
Stack Overflow。 用
azure-media-services
标记问题。 - @MSFTAzureMedia 或使用 @AzureSupport 请求支持。
- 通过 Azure 门户开具支持票证。