媒体服务实时事件

Media Services logo v3


警告

Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南

使用 Azure 媒体服务可将实时事件传送到 Azure 云中的客户。

提示

如果是从媒体服务 v2 API 迁移,请注意“实时事件”实体取代了 v2 中的“频道”,“实时输出”取代了“节目”。

直播活动

实时事件可以引入和处理实时视频源。 创建实时事件时会创建一个引入终结点。 引入终结点使用来自远程编码器的实时信号。 远程实时编码器使用 RTMP平滑流式处理(分段 MP4)输入协议将源发送到输入终结点。 对于 RTMP 引入协议,内容可以通过明文 (rtmp://) 或网络安全加密 (rtmps://) 的方式发送。 对于平滑流式处理引入协议,支持的 URL 方案为 http://https://

默认分配是每个媒体服务帐户 5 个实时事件。

实时事件类型

可将实时事件设置为基本或标准直通或实时编码。 这些类型是在创建期间使用实时事件编码类型设置的。

  • 基本直通:本地实时编码器发送多比特率流。 基本直通限制为 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,或者 .NetNode.JSPython 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.chinacloudapi.cn:1935/live/<auto-generated access token>/<stream name>
rtmp://<random 128bit hex string>.channel.media.chinacloudapi.cn:1936/live/<auto-generated access token>/<stream name>
rtmps://<random 128bit hex string>.channel.media.chinacloudapi.cn:2935/live/<auto-generated access token>/<stream name>
rtmps://<random 128bit hex string>.channel.media.chinacloudapi.cn:2936/live/<auto-generated access token>/<stream name>

顺畅流式处理

http://<random 128bit hex string>.channel.media.chinacloudapi.cn/<auto-generated access token>/ingest.isml/streams(<stream name>)
https://<random 128bit hex string>.channel.media.chinacloudapi.cn/<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.chinacloudapi.cn:1935/live/<your access token>/<stream name>
rtmp://<live event name>-<ams account name>-<region abbrev name>.channel.media.chinacloudapi.cn:1936/live/<your access token>/<stream name>
rtmps://<live event name>-<ams account name>-<region abbrev name>.channel.media.chinacloudapi.cn:2935/live/<your access token>/<stream name>
rtmps://<live event name>-<ams account name>-<region abbrev name>.channel.media.chinacloudapi.cn:2936/live/<your access token>/<stream name>

顺畅流式处理

http://<live event name>-<ams account name>-<region abbrev name>.channel.media.chinacloudapi.cn/<your access token>/ingest.isml/streams(<stream name>)
https://<live event name>-<ams account name>-<region abbrev name>.channel.media.chinacloudapi.cn/<your access token>/ingest.isml/streams(<stream name>)

实时事件预览 URL

一旦实时事件开始接收贡献源,你就可以使用其预览终结点进行预览,并在进一步发布之前验证是否可以收到实时传送流。 确认预览流正常后,可以使用实时事件,以便通过一个或多个(预先创建的)流式处理终结点传送实时传送流。 为此,请针对实时事件创建新的实时输出

重要

确保视频流向预览 URL,然后再继续操作!

实时事件的长时间运行的操作

有关详细信息,请参阅长时间运行的操作