媒体服务实时传送视频流最佳做法指南
客户经常询问他们如何降低实时流的延迟。 本文介绍除了实时事件编码之外,还介绍了实现低延迟实时流的最佳做法。
注意
在继续阅读本文之前,请阅读 低延迟 HLS (LL-HLS) 一文,了解实时事件编码的低延迟。 然后,返回到本指南,了解可能影响流式处理延迟的其他内容。
除了对媒体进行编码外,还存在许多因素来确定流的端到端延迟。 下面是应考虑的一些事项:
贡献编码器端的延迟。 当客户使用 OBS Studio、Wirecast 或其他编码软件将 RTMP 实时流发送到媒体服务时。 此软件的设置会影响实时流的端到端延迟。
Azure 媒体服务中实时传送视频流管道的延迟
CDN 性能
在客户端缓冲视频播放器和网络条件的算法
预配的时间
贡献编码器
在 RTMP 流到达媒体服务之前,你控制源编码器设置的设置。 下面是一些设置的建议,这些设置可提供尽可能低的延迟:
为媒体服务帐户选择离贡献编码器最近的物理区域。 这将确保与媒体服务帐户建立良好的网络连接。
使用一致的片段大小。 建议 GOP 大小为 2 秒。 某些编码器(如 OBS)的默认值为 8 秒。 请确保更改此设置。
如果编码软件允许执行此操作,请使用 GPU 编码器。 这样,就可以将 CPU 工作卸载到 GPU。
使用针对低延迟进行优化的编码配置文件。 例如,如果使用 OBS Studio,如果使用 Nvidia H.264 编码器,可能会看到“零延迟”预设。
发送分辨率不高于计划流式传输的内容。 例如,如果使用 720p 标准编码实时事件,则发送已为 720p 的流。
除非使用直通直播活动,否则请将帧速率保持在 30fps 或更低。 虽然我们支持实时事件的 60 fps 输入,但编码实时事件输出仍然不超过 30 fps。 对于 低延迟 HLS,建议使用固定帧速率,最大帧持续时间不应超过 0.5 秒,以获得最佳体验。
配置 Azure 媒体服务直播活动
下面是一些配置,可帮助你减少管道中的延迟:
对实时事件使用低延迟流选项。 对于标准编码(最多 720p)和高级编码(最多 1080p)流选项,除非需要 6 小时以上的 DVR 窗口或平滑流输出,请使用低延迟流延迟设置。
建议为 HLS 和 DASH 播放选择 CMAF 输出。 这允许你为这两种格式共享相同的片段。 使用 CDN 时,它会增加缓存命中率。 例如:
类型 格式 URL 示例 HLS CMAF format=m3u8-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-cmaf)
MPEG-DASH CMAF format=mpd-time-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=mpd-time-cmaf)
如果必须选择 TS 输出,请使用 HLS 打包比率 1。 这样,我们只能将一个片段打包到一个 HLS 段。 在本机 Apple 播放器中,你不会获得 LL-HLS 的全部好处。
玩家优化
选择和配置视频播放器时,请确保使用针对较低延迟进行优化的设置。
媒体服务支持不同的流式处理协议输出 - DASH、具有 TS 输出的 HLS 和具有 CMAF 片段的 HLS。 使用 LowLatencyV2
流选项时,请确保找到支持低延迟 HLS(LL-HLS)的玩家。 根据玩家的实现,缓冲决策会影响查看器观察到的延迟。 网络条件差或支持播放质量和稳定性的默认算法可能会导致玩家决定提前缓冲更多内容,以防止播放期间中断。 在播放会话之前和期间,这些缓冲区将添加到端到端延迟。
使用 Azure Media Player 时,低延迟启发式 配置文件优化玩家,以在玩家端具有最低的延迟。 此播放器仅支持 DASH,除非它在 Apple 设备上的 Safari 上使用。
CDN 选择和优化
流式处理终结点是将实时和 VOD 流式处理内容直接传送到 CDN 或客户的源服务器。 最好将内容分发网络(CDN)与受防护的源一起使用,以确保有效地传送媒体内容的流量。
我们建议使用 Verizon 提供的 Azure CDN(标准版或高级版)。 我们优化了集成体验,以便客户可以在 Azure 门户中使用单个选择来配置此 CDN。 每当启动流式处理终结点时,请务必为 CDN 终结点启用 Origin Shield 和流式处理优化。
我们的客户也有良好的体验,带来了自己的 CDN。 确保对 CDN 采取措施,防止源流量过多。
还可以通过配置 CDN 配置文件的规则来提高性能。 请参阅 如何启用 CDN 优化。
流式处理终结点缩放
注意
标准流式处理终结点/源 是一种 共享 资源,可让客户以较低的成本流式传输内容。 如果预期流量量较大或计划使用 CDN,则
高级流式处理终结点/源 通过添加或删除 专用 流单元,为客户提供更大的灵活性和隔离性。 流式处理单元 是分配给流式处理终结点的计算资源。 每个流式处理单元可以流式传输大约 200 Mbps 的流量。
虽然可以使用同一流式处理终结点同时流式传输许多实时事件,但一个流式处理终结点所需的最大默认流式处理单位为 10。 可以打开支持票证以请求超过默认 10。
确定所需的高级流单元
有两个步骤来确定所需的流式处理终结点和流单元数:
确定所需的总出口量。
将总出口量除以 200,这是每个流式处理单元可以流式传输的最大 Mbps 数。
确定所需的总出口量
使用以下公式确定所需的总出口量。
所需出口总量 = 流式处理终结点处理的并发查看器的平均带宽 x 百分比 x%。
我们来看看每个乘数依次:
平均带宽。 计划流式传输的平均 比特率
对于 包括编码的直播活动:
如果不知道 平均 带宽是什么,则可以使用我们的最高比特率作为估计。 对于 1080p 编码的实时事件,我们的 最高 比特率为 5.5Mbps,因此,平均比特率大约为 3.5Mbps。
查看用于对实时事件进行编码的编码预设,例如 AdaptiveStreaming(H.264) 预设。 请参阅此 输出示例。
对于只是使用直通而不是编码的实时事件:
- 检查本地编码器使用的编码比特率阶梯。
并发查看器数。 需要多少个并发查看器? 这可能很难估计,但根据客户数据尽最大努力。 你是将会议流式传输到全球受众吗? 你是否打算实时流向客户销售一组产品?
流式处理终结点处理流量的百分比。 这也可以表示为“CDN 未处理的流量百分比”,因为这是实际进入公式的数字。 因此,考虑到这一点,你期望的 CDN 卸载是什么? 如果 CDN 应处理实时流量的 90%,则流式处理终结点上只有 10% 流量。 公式中使用的数字为 .10,这是流式处理终结点上预期流量的百分比。
确定所需的高级流单元数
所需的高级流式处理单位 = 查看者的平均带宽 x # 的查看者 x 流量百分比 / 200 Mbps
例
你最近发布了一款新产品,并想要将其呈现给已建立的客户。 需要低延迟,因为不想让已忙的受众感到沮丧,因此你将使用高级流式处理终结点和 CDN。
你大约有 100,000 个客户,但他们可能根本不会观看你的直播活动。 你猜到,在最好的情况下,只有1% 他们将出席,这让你的预期并发观众达到1,000人。
并发用户数 =1,000
你已决定使用媒体服务对实时流进行编码,不会使用直通。 你不知道平均带宽将是什么,但你知道你将以 1080p(最高 比特率为 5.5 Mbps)提供),因此计算 平均 带宽估计为 3.5 Mbps。
平均带宽 =3.5
由于受众分散在世界各地,因此你预计 CDN 将处理大多数实时流量(90%)。 因此,高级流式处理终结点仅处理 10 个流量%。
由流式处理终结点处理的 百分比 =10% = 0.1
使用上面提供的公式:
总出口量 = 流式处理终结点处理的平均带宽 x 并发查看器数 x 百分比。
总出口量 = 3.5 x 1,000 x 0.1
总出口量 = 350 Mbps
将总出口量除以 200,确定需要 1.75 个高级流式处理单元。
需要高级流式处理单元, = /200Mpbs 所需的总出口量
所需的高级流单元 = 1.75
我们将这个数字舍入到 2,给我们所需的 2 个单位。
使用门户估算需求
Azure 门户可帮助你简化计算。 在流式处理页上,可以使用提供的计算器查看在更改平均带宽、CDN 命中率和流式处理单位数时估计的受众数量。
在媒体服务帐户页中,从菜单中选择 Steaming 终结点。
通过选择 “添加流式处理终结点”来添加新流式处理终结点。
为流式处理终结点命名。
为流式处理终结点类型选择 高级流式处理终结点。
由于目前只是获得估计值,因此在创建后不要启动流式处理终结点。 选择 “无”。
为 CDN 定价层选择 标准 Verizon 或 Premium Verizon。 配置文件名称将相应地更改。 保留此练习的名称。
对于 CDN 配置文件,请选择“新建 。
选择 创建。 部署终结点后,将显示流式处理终结点屏幕。
选择刚刚创建的流式处理终结点。 流式处理终结点屏幕将显示受众访问量估计值。
1 个流式处理单元的流式处理终结点的默认设置显示,使用 CDN 的 90% 和流式处理终结点的 10%,估计以 3.5 Mbps 的速度流式传输到 571 个并发查看器。
将 出口源 的百分比从 CDN 缓存的 90% 更改为 0%。 计算器估计,在不 CDN 的情况下,能够以 3.5 Mbps 的速度以 3.5 Mbps 的速度流式传输到 57 个并发查看器
。 现在,将 出口源 更改为 90%。
然后,将 流式处理单元 更改为 2。 计算器估计,你将能够以 3.5 Mbps 的 3.5 Mbps 和 4000Mpbs 的速度流式传输到 1143 个并发查看器,CDN 处理流量的 90%。
选择 保存。
可以启动流式处理终结点,并尝试向其发送流量。 屏幕底部的指标将跟踪实际流量。
定时
你可能希望在预期高峰使用量之前预配流式处理单元 1 小时,以确保流式处理单元准备就绪。
获取帮助和支持
可以通过以下方法之一联系媒体服务,并关注我们的更新:
- Q & A
-
Stack Overflow。 用
azure-media-services
标记问题。 - @MSFTAzureMedia 或使用 @AzureSupport 请求支持。
- 通过 Azure 门户开具支持票证。