媒体服务 v3 Widevine 许可证模板概述

通过 Azure 媒体服务,可使用 Google Widevine 加密内容。 媒体服务还提供传送 Widevine 许可证的服务。 可使用 Azure 媒体服务 API 来配置 Widevine 许可证。 当播放器尝试播放受 Widevine 保护的内容时,将向许可证交付服务发送请求以获取许可证。 如果许可证服务批准了请求,则该服务将颁发许可证。 许可证将被发送到客户端,并用于解密和播放指定的内容。

注意

Widevine 在 GovCloud 区域中不可用。

Widevine 许可证请求将格式化为 JSON 消息。

{
    "payload":"<license challenge>",
    "content_id": "<content id>"
    "provider": "<provider>"
    "allowed_track_types":"<types>",
    "content_key_specs":[
        {
            "track_type":"<track type 1>"
        },
        {
            "track_type":"<track type 2>"
        },
        …
    ],
    "policy_overrides":{
        "can_play":<can play>,
        "can persist":<can persist>,
        "can_renew":<can renew>,
        "rental_duration_seconds":<rental duration>,
        "playback_duration_seconds":<playback duration>,
        "license_duration_seconds":<license duration>,
        "renewal_recovery_duration_seconds":<renewal recovery duration>,
        "renewal_server_url":"<renewal server url>",
        "renewal_delay_seconds":<renewal delay>,
        "renewal_retry_interval_seconds":<renewal retry interval>,
        "renew_with_usage":<renew with usage>
    }
}

注意

可以创建一个不包含任何值、只带“{}”的空消息。然后,将会创建一个具有默认值的许可证模板。 默认值适用于大多数情况。 基于 Microsoft 的许可证交付方案应始终使用默认值。 如果需要设置“provider”和“content_id”值,提供程序必须与 Widevine 凭据匹配。

JSON 消息

名称 说明
payload Base64 编码的字符串 客户端发送的许可证请求。
content_id Base64 编码的字符串 用于为每个 content_key_specs.track_type 派生密钥 ID 与内容密钥的标识符。
provider 字符串 用于查找内容密钥和策略。 如果将 Microsoft 密钥传送用于 Widevine 许可证传送,则忽略此参数。
policy_name 字符串 以前注册的策略的名称。 可选。
allowed_track_types 枚举 SD_ONLY 或 SD_HD。 控制许可证中包含哪些内容密钥。
content_key_specs JSON 结构的数组,请参阅“内容密钥规范”部分。 更精细地控制要返回哪些内容密钥。 有关详细信息,请参阅“内容密钥规范”一节。只能指定其中一个 allowed_track_types 和 content_key_specs 值。
use_policy_overrides_exclusively 布尔值 true 或 false 使用 policy_overrides 所指定的策略属性,并忽略以前存储的所有策略。
policy_overrides JSON 结构,请参阅“策略重写”部分。 此许可证的策略设置。 如果此资产具有预定义的策略,则会使用这些指定的值。
session_init JSON 结构,请参阅“会话初始化”部分。 向许可证传递可选的数据。
parse_only 布尔值 true 或 false 解析许可证请求,但不颁发许可证。 但是,会在响应中返回许可证请求中的值。

内容密钥规范

如果有预先存在的策略,则不需要在内容密钥规范中指定任何值。将使用与此内容关联的预先存在的策略来确定输出保护,例如高带宽数字内容保护 (HDCP) 和副本通用管理系统 (CGMS)。 如果预先存在的策略未注册到 Widevine 许可证服务器,则内容提供程序可以在许可证请求中注入值。

无论 use_policy_overrides_exclusively 选项的值是什么,都必须为所有跟踪指定每个 content_key_specs 值。

名称 说明
content_key_specs。 track_type 字符串 跟踪类型名称。 如果许可证请求中指定了 content_key_specs,请确保显式指定所有跟踪类型。 否则会导致无法播放过去 10 秒的内容。
content_key_specs
security_level
uint32 定义客户端对播放稳定性的要求。
- 需要基于软件的白盒加密。
- 需要软件加密和模糊处理解码器。
- 密钥材料和加密操作必须在由硬件支持的可信执行环境中执行。
- 内容加密和解码必须在由硬件支持的可信执行环境中执行。
- 加密、解码与媒体(压缩和未压缩)的所有处理必须在由硬件支持的可信执行环境中处理。
content_key_specs
required_output_protection.hdc
字符串:HDCP_NONE、HDCP_V1 和 HDCP_V2 中的一个 指示是否需要 HDCP。
content_key_specs
key
Base64-
编码的字符串
用于此跟踪的内容密钥。如果指定,则需要 track_type 或 key_id。 内容提供者可以使用此选项注入此跟踪的内容密钥,而不是让 Widevine 许可证服务器生成或查找密钥。
content_key_specs.key_id Base64 编码的二进制字符串,16 字节 密钥的唯一标识符。

策略重写

名称 说明
policy_overrides.can_play 布尔值 true 或 false 指示允许播放内容。 默认值为 false。
policy_overrides.can_persist 布尔值 true 或 false 指示可以将许可证保存到非易失性存储器供脱机使用。 默认值为 false。
policy_overrides.can_renew 布尔值 true 或 false 指示允许续订此许可证。 如果为 true,则可以通过检测信号延长许可证期限。 默认值为 false。
policy_overrides.license_duration_seconds int64 指示此特定许可证的时限。 值 0 表示期限没有限制。 默认为 0。
policy_overrides.rental_duration_seconds int64 指示允许播放的时期。 值 0 表示期限没有限制。 默认为 0。
policy_overrides.playback_duration_seconds int64 在许可证期限内开始播放后的观看时限。 值 0 表示期限没有限制。 默认为 0。
policy_overrides.renewal_server_url 字符串 将此许可证的所有检测信号(续订)请求定向到指定的 URL。 仅当 can_renew 为 true 时才使用此字段。
policy_overrides.renewal_delay_seconds int64 license_start_time 之后经过几秒才尝试首次续订。 仅当 can_renew 为 true 时才使用此字段。 默认为 0。
policy_overrides.renewal_retry_interval_seconds int64 指定在发生失败时,每两次发出后续许可证更新请求所要经历的延迟秒数。 仅当 can_renew 为 true 时才使用此字段。
policy_overrides.renewal_recovery_duration_seconds int64 当尝试了续订但由于许可证服务器发生后端问题而未成功时,可以继续播放的时间段。 值 0 表示期限没有限制。 仅当 can_renew 为 true 时才使用此字段。
policy_overrides.renew_with_usage 布尔值 true 或 false 指示开始使用时发送许可证以进行续订。 仅当 can_renew 为 true 时才使用此字段。

会话初始化

名称 说明
provider_session_token Base64 编码的字符串 此会话令牌将传回到许可证,并存在于后续的续订中。 会话令牌不能在会话之外持久保存。
provider_client_token Base64 编码的字符串 要在许可证响应中返回的客户端令牌。 如果许可证请求包含客户端令牌,则忽略此值。 客户端令牌可以在许可证会话之外持久保存。
override_provider_client_token 布尔值 true 或 false 如果为 false 并且许可证请求包含客户端令牌,请使用来自请求的令牌,即使此结构中已指定客户端令牌。 如果为 true,则始终使用此结构中指定的令牌。

附加说明

  • Widevine 是 Google Inc. 提供的一项服务,并受 Google Inc. 服务条款和隐私策略的约束。