媒体服务实时事件
警告
Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南。
使用 Azure 媒体服务可将实时事件传送到 Azure 云中的客户。
提示
如果是从媒体服务 v2 API 迁移,请注意“实时事件”实体取代了 v2 中的“频道”,“实时输出”取代了“节目”。
直播活动
实时事件可以引入和处理实时视频源。 创建实时事件时会创建一个引入终结点。 引入终结点使用来自远程编码器的实时信号。 远程实时编码器使用 RTMP 或平滑流式处理(分段 MP4)输入协议将源发送到输入终结点。 对于 RTMP 引入协议,内容可以通过明文 (rtmp://
) 或网络安全加密 (rtmps://
) 的方式发送。 对于平滑流式处理引入协议,支持的 URL 方案为 http://
或 https://
。
默认分配是每个媒体服务帐户 5 个实时事件。 若要提高此限制,请在 Azure 门户中提交支持票证。
实时事件类型
可将实时事件设置为基本或标准直通或实时编码。 这些类型是在创建期间使用实时事件编码类型设置的。
- 基本直通:本地实时编码器发送多比特率流。 基本直通限制为 5 Mbps 的峰值流入速率,DVR 时限为 8 小时,不支持实时听录。
- 标准直通:本地实时编码器发送多比特率流。 标准直通的引入速率限制更高,DVR 时限为 25 小时,支持实时听录。
- 标准:本地实时编码器将单比特率流发送到实时事件,媒体服务创建多比特率流。 如果贡献源的分辨率为 720p 或更高,则 Default720p 预设将编码一组 6 分辨率/比特率对。
- 高级 1080p:本地实时编码器将单比特率流发送到实时事件,媒体服务创建多比特率流。 Default1080p 预设指定分辨率/比特率对的输出集。
注意
对于标准和高级编码,最大帧速率为 30 fps。
直通实时事件
使用基本或标准直通实时事件时,可以使用本地实时编码器生成多比特率视频流,并将其发送到实时事件(使用 RTMP 或分段 MP4 协议)。 然后,实时事件会接受传入视频流,不对其进行进一步的处理。 直通实时事件已针对长时间运行的实时事件或 24x365 线性实时传送视频流进行优化。 创建这种类型的实时事件时,请指定“基本”或“标准”直通。
发送的源的最高分辨率可为 4K,帧速率可为 60 帧/秒,采用 H.264/AVC 或 H.265/HEVC(仅平滑引入)视频编解码器,以及 AAC(AAC-LC、HE-AACv1 或 HE-AACv2)音频编解码器。 有关详细信息,请参阅实时事件类型的比较。
注意
当你要在很长一段时间内进行多个活动,并且已在本地编码器上进行投入时,使用直通方法是进行实时传送视频流的最经济方式。 请参阅定价详细信息。
实时编码实时事件
使用实时编码时,需要配置本地实时编码器,以便将单比特率视频发送到实时事件(使用 RTMP 或分段 MP4 协议)。 然后设置实时事件,以便将传入的单比特率流编码为多比特率视频流。 这样,便可以通过 MPEG-DASH、HLS 和平滑流式处理等协议将输出传送到播放设备。
在这种情况下,可发送的贡献源最高分辨率只能是 1080p,帧速率是 30 帧/秒,采用 H.264/AVC 视频编解码器,以及 AAC(AAC-LC、HE-AACv1 或 HE-AACv2)音频编解码器。 有关详细信息,请参阅实时事件类型的比较。
低延迟 HLS 和 DASH 流式处理选项
有关如何使用实时事件编码实现低延迟的详细信息,请参阅 低延迟 HLS (LL-HLS) 和 DASH 流式处理选项 和 实时流式处理最佳做法指南。
实时编码输出分辨率和比特率
实时编码器生成的输出中的分辨率和比特率由预设确定:
- 如果你使用标准实时编码器,则 Default720p 预设将指定 6 个分辨率/比特率对,其最高分辨率为 720p,最高比特率为 3.5 Mbps,最低分辨率为 192p,最低比特率为 200 kbps。
- 如果你使用 Premium1080p 实时编码器,则 Default1080p 预设将指定 6 个分辨率/比特率对,其最高分辨率为 1080p,最高比特率为 3.5 Mbps,最低分辨率为 180p,最低比特率为 200 kbps。
有关信息,请参阅系统预设。
注意
如果需要自定义实时编码预设,请通过 Azure 门户开具支持票证。 应指定所需的视频分辨率/比特率和音频比特率表。 对于视频,请验证在 720p 只有一个图层,并且最多有 6 个图层。 对于音频,可以使用以下离散 AAC 音频比特率(96k、112k、128k、160k、192k、224k、256k、320k、384k、448k、512k)进行自定义。 可采用不同比特率的多个音频轨道,并且可将它们包含在自定义预设中。 另请在支持票证中指定正在请求自定义预设。
请参阅 LiveEventEncodingType 的 REST API,或者 .Net、Node.JS 或 Python SDK。 此外,还可以尝试实时事件示例代码。
实时事件选项
创建实时事件时,可以指定以下选项:
- 名称和说明。
- 对于标准和高级编码,可以选择已编码视频的拉伸模式:
- 无:严格遵循编码预设中指定的输出分辨率,而不考虑输入视频的像素纵横比或显示纵横比。
- AutoSize:替代输出分辨率,并对其进行更改以匹配输入的显示纵横比,无需填充。 例如,如果输入为 1920x1080,而编码预设要求提供 1280x1280,则会重写预设中的值,输出将是 1280x720,这样可以保持 16:9 的输入纵横比。
- AutoFit:根据输出分辨率填充输出(使用上下黑边或左右黑边),同时确保输出中活动视频区域的纵横比与输入相同。 例如,如果输入为 1920x1080,并且编码预设要求提供 1280x1280,则输出将是 1280x1280,其中包含纵横比为 16:9 的 1280x720 内部矩形,并在左侧和右侧包含宽度为 280 像素的左右黑边区域。
- 流式处理协议:RTMP 或平滑流式处理。 注意:运行实时事件或其关联的实时输出时,无法更改协议选项。 如果需要不同的协议,请为每个流式处理协议创建单独的实时事件。
- 输入 ID,它是实时事件输入流的全局唯一标识符。
- 包含 None 的静态主机名前缀(在本例中,将使用随机的 128 位十六进制字符串),使用实时事件名称,或使用自定义名称。 选择使用自定义名称时,此值为自定义主机名前缀。
- 输入关键帧间隔,它是 HLS 输出中每个媒体段的持续时间(以秒为单位)。 该值应当为 0.5 秒到 20 秒范围内的非零整数。 如果输入或输出关键帧间隔均未设置,则该值默认为 2 秒。 只有直通事件中允许设置关键帧间隔。
- Autostart。 如果将 autostart 设置为 true,则实时事件会在创建后启动。 只要实时事件开始运行,就会开始计费。 必须显式停止实时事件才能停止进一步计费。 或者,可以在准备好开始流式传输后,启动事件。
- 对引入和预览的 IP 限制。 可定义允许向该实时事件引入视频的 IP 地址。 允许的 IP 地址可以指定为单个 IP 地址(例如“10.0.0.1”)、使用一个 IP 地址和 CIDR 子网掩码的 IP 范围(例如“10.0.0.1/22”)或使用一个 IP 地址和点分十进制子网掩码的 IP 范围(例如“10.0.0.1(255.255.252.0)”)。
- 如果未指定 IP 地址并且没有规则定义,则不会允许任何 IP 地址。 若要允许任何 IP 地址,请创建规则并设置 0.0.0.0/0。 IP 地址必须采用以下格式之一:具有四个数字或 CIDR 地址范围的 IPv4 或 IPv6 地址。 有关使用 IPv4 或 IPv6 的详细信息,请参阅使用 IP 允许列表限制对 DRM 许可证和 AES 密钥传送的访问。
- 如果要在自己的防火墙上启用某些 IP,或者要将直播活动的输入约束到 Azure IP 地址,请从 Azure 数据中心 IP 地址范围下载 JSON 文件。 有关此文件的详细信息,请选择页面上的“详细信息”部分。
- 默认已禁用的实时听录。 有关实时转录的详细信息,请阅读实时听录。
备用模式
创建实时事件时,可以将其设置为备用模式。 当事件处于备用模式时,你可以编辑说明和静态主机名前缀,并限制输入和预览访问设置。 备用模式仍为可计费模式,但价格不同于启动实时传送流时的价格。
有关详细信息,请参阅实时事件状态和计费。
实时输出
设置从本地编码器到实时事件的流后,可以通过创建资产、实时输出和流定位符来启动流式处理事件。 实时输出会将流存档,并使观看者可通过流式处理终结点使用该流。
实时事件输出问题
查看常见问题解答中的实时事件问题。 有关实时事件配额的信息,请参阅配额和限制
有关设置实时事件的更多详细信息
命名规则
- 最大直播活动名称为 32 个字符。
- 该名称应遵循此正则表达式模式:
^[a-zA-Z0-9]+(-*[a-zA-Z0-9])*$
。
另请参阅流式处理终结点命名约定。
提示
为了保证直播活动名称的唯一性,可以生成 GUID,并删除所有连字符和大括号(如果有)。 该字符串在所有直播活动中都是唯一的,并且其长度保证为 32。
实时事件引入 URL
创建实时事件后,可以获得要提供给实时本地编码器的引入 URL。 实时编码器使用这些 URL 来输入实时流。 有关详细信息,请参阅建议的本地实时编码器。
注意
从 2020-05-01 API 版本开始,虚 URL 称为静态主机名 (useStaticHostname: true)
注意
要使一个引入 URL 变为静态且可预测,以便在设置硬件编码器时使用,请将 useStaticHostname 属性设置为 true,并在每次创建时将 accessToken 属性设置为相同的 GUID 。
非静态主机名
创建 LiveEvent 时,媒体服务 v3 中的默认模式为非静态主机名。 可以稍微更快地分配直播活动,但实时编码硬件或软件所需的引入 URL 将是随机的。 如果停止/启动实时事件,此 URL 会更改。 非静态主机名仅适合这样的情况:即最终用户想要使用应用进行流式处理,而应用需要非常快速地获取直播活动,并且可以轻松获取动态引入 URL。
如果客户端应用在创建实时事件之前不需要预生成引入 URL,请让媒体服务自动生成实时事件的访问令牌。
静态主机名
大多数希望使用在创建或停止/启动特定直播活动时不会发生改变的 RTMP 引入 URL 来预先配置其实时编码硬件或软件的操作员,更倾向于使用静态主机名模式。 这些操作员需要一个不随时间变化的预测性 RTMP 引入 URL。 如果需要将静态 RTMP 引入 URL 推送到硬件编码设备(如 BlackMagic Atem Mini Pro)的配置设置或类似的硬件编码和生产工具,这也非常有用。
注意
在 Azure 门户中,静态主机名 URL 称为“静态主机名前缀”。
若要在 API 中指定此模式,请在创建时将
useStaticHostName
设为true
(默认值为false
)。 如果useStaticHostname
设置为 true,则hostnamePrefix
指定分配给实时事件预览和引入终结点的主机名的第一部分。 最终主机名将是此前缀、媒体服务帐户名称和 Azure 媒体服务数据中心的短代码的组合。为了避免 URL 中出现随机令牌,在创建时还需要传递你自己的访问令牌 (
LiveEventInput.accessToken
)。 访问令牌必须是有效的 GUID 字符串(带或不带连字符)。 一旦设置模式,就无法将其更新。Azure 区域和媒体服务帐户的访问令牌必须是唯一的。 如果应用需使用静态主机名引入 URL,建议始终创建新的 GUID 实例,将其与特定的区域、媒体服务帐户和直播活动分别组合使用。
使用以下 API 启用静态主机名 URL,并将访问令牌设置为有效的 GUID(例如
"accessToken": "1fce2e4b-fb15-4718-8adc-68c6eb4c26a7"
)。语言 启用静态主机名 URL 设置访问令牌 REST properties.useStaticHostname LiveEventInput.useStaticHostname CLI --use-static-hostname --access-token .NET LiveEvent.useStaticHostname LiveEventInput.AccessToken
实时引入 URL 命名规则
- 下面的随机 字符串是一个 128 位的十六进制数字(由 32 个 0-9 a-f 字符组成)。
- 你的访问令牌:使用静态主机名设置时设置的有效 GUID 字符串。 例如,
"1fce2e4b-fb15-4718-8adc-68c6eb4c26a7"
。 - 流名称:指示特定连接的流名称。 流名称值通常由使用的实时编码器添加。 可将实时编码器配置为使用任何名称来描述连接,例如:“video1_audio1”、“video2_audio1”、“stream”。
警告
如果在流名称中使用任何特殊字符或空格,实时引入将会失败。 请参阅开发人员概念概述中的媒体服务资源命名约定。
非静态主机名引入 URL
RTMP
rtmp://<random 128bit hex string>.channel.media.azure.net:1935/live/<auto-generated access token>/<stream name>
rtmp://<random 128bit hex string>.channel.media.azure.net:1936/live/<auto-generated access token>/<stream name>
rtmps://<random 128bit hex string>.channel.media.azure.net:2935/live/<auto-generated access token>/<stream name>
rtmps://<random 128bit hex string>.channel.media.azure.net:2936/live/<auto-generated access token>/<stream name>
顺畅流式处理
http://<random 128bit hex string>.channel.media.azure.net/<auto-generated access token>/ingest.isml/streams(<stream name>)
https://<random 128bit hex string>.channel.media.azure.net/<auto-generated access token>/ingest.isml/streams(<stream name>)
静态主机名引入 URL
在以下路径中,<live-event-name>
表示为事件指定的名称或在创建实时事件时使用的自定义名称。
RTMP
rtmp://<live event name>-<ams account name>-<region abbrev name>.channel.media.azure.net:1935/live/<your access token>/<stream name>
rtmp://<live event name>-<ams account name>-<region abbrev name>.channel.media.azure.net:1936/live/<your access token>/<stream name>
rtmps://<live event name>-<ams account name>-<region abbrev name>.channel.media.azure.net:2935/live/<your access token>/<stream name>
rtmps://<live event name>-<ams account name>-<region abbrev name>.channel.media.azure.net:2936/live/<your access token>/<stream name>
顺畅流式处理
http://<live event name>-<ams account name>-<region abbrev name>.channel.media.azure.net/<your access token>/ingest.isml/streams(<stream name>)
https://<live event name>-<ams account name>-<region abbrev name>.channel.media.azure.net/<your access token>/ingest.isml/streams(<stream name>)
实时事件预览 URL
一旦实时事件开始接收贡献源,你就可以使用其预览终结点进行预览,并在进一步发布之前验证是否可以收到实时传送流。 确认预览流正常后,可以使用实时事件,以便通过一个或多个(预先创建的)流式处理终结点传送实时传送流。 为此,请针对实时事件创建新的实时输出。
重要
确保视频流向预览 URL,然后再继续操作!
实时事件的长时间运行的操作
有关详细信息,请参阅长时间运行的操作。
获得帮助和支持
如果有任何疑问,可以联系媒体服务,或者使用以下方法之一关注我们的更新:
- 问答
-
Stack Overflow。 使用
azure-media-services
标记问题。 - @MSFTAzureMedia 或使用 @AzureSupport 请求支持。
- 通过 Azure 门户提交支持票证。