# 预设模板与自定义策略

选择与已发布加密内容匹配的 DRM-X 许可证策略，设置有效期、输出保护和各清晰度档位的播放规则。

为内容选择策略

策略应与视频打包加密时使用的密钥模型一致。

- 01**Single Key Protection**

所有轨道共用一个策略：single-software、single-hdcp 或 single-hardware。

- 02**Multi-key Quality Tiered**

使用 multi-tier-standard，为音频、SD、HD 和 UHD 分别设置安全规则。

选择匹配包密钥模式的政策。单键使用一个统一规则;分级包使用单独的音轨规则。

许可证策略 

## 使用服务器端命名策略模板[#](#use-a-server-side-named-policy-template)



使用命名模板后，应用代码无需维护大部分策略 JSON。DRM-X 会将模板名称展开为规范的 v2 策略，根据实际加密输出包验证策略，再将结果签入 DRM License Token。



为内容选择策略

策略应与视频打包加密时使用的密钥模型一致。

- 01**Single Key Protection**

所有轨道共用一个策略：single-software、single-hdcp 或 single-hardware。

- 02**Multi-key Quality Tiered**

使用 multi-tier-standard，为音频、SD、HD 和 UHD 分别设置安全规则。

选择与打包加密时所用密钥模型一致的策略模板。 


| 名称 | 加密输出包的密钥模型 | 规则说明 | 
| --- | --- | --- |

| `single-software` | 单密钥 | 兼容性广，使用软件 DRM，不设置最低 HDCP 要求。 | 

| `single-hdcp` | 单密钥 | 软件 DRM，要求 HDCP 1.x 级输出保护。 | 

| `single-hardware` | 单密钥 | 硬件安全 DRM，要求 HDCP 2.2 级输出保护。 | 

| `multi-tier-standard` | 多密钥 | 音频和 SD 使用软件 DRM；HD 使用软件 DRM + HDCP；UHD1 使用硬件安全 DRM + HDCP 2.2。 | 


```
{
  "contentId": "course-12-lesson-4",
  "contentType": "vod",
  "drmSystem": "widevine",
  "subject": "customer-user-1001",
  "playbackMode": "streaming",
  "licensePolicyTemplate": "multi-tier-standard",
  "useEnvironmentDefaults": true,
  "maximumQualityTier": "auto"
}
```



启用 `useEnvironmentDefaults: true` 时，模板提供安全规则，已保存的环境设置决定 DRM License Token 有效期、并发播放数和续期方式。若需严格使用模板中的这些运行参数，请将该选项设为 `false`。



应用可通过 `GET /api/v1/playback/license-policy-templates` 查询当前内置模板。输入模板名称时不区分大小写，请求中会使用规范名称。





许可证策略 

## 在请求中提交完整的自定义策略[#](#send-a-complete-custom-request-time-policy)



命名模板无法满足业务规则时，请使用 `licensePolicy`。同一请求中不要同时发送 `licensePolicyTemplate`。



```
{
  "policy_version": 2,
  "playback_policy": {
    "persistent": false,
    "license_duration": 14400,
    "rental_duration": 0,
    "playback_duration": 7200,
    "renewal_duration": 300,
    "allowed_track_types": "ALL",
    "max_stream_per_user": 2
  },
  "security_policy": [{
    "track_type": "ALL",
    "widevine": {
      "security_level": 1,
      "required_hdcp_version": "HDCP_V1",
      "disable_analog_output": true
    },
    "playready": {
      "security_level": 2000,
      "digital_video_protection_level": 250,
      "analog_video_protection_level": 150,
      "digital_audio_protection_level": 100
    },
    "fairplay": {
      "hdcp_enforcement": 0,
      "allow_airplay": true,
      "allow_av_adapter": false
    },
    "wiseplay": {
      "security_level": 1,
      "output_control": 1
    }
  }]
}
```



### 验证失败时拒绝授权的规则


- 策略 JSON 不得超过 16 KiB，必须使用 `policy_version: 2`，最多包含七条不重复的轨道规则。 
- 单密钥内容必须包含一条 `ALL` 规则、`allowed_track_types: ALL`，并使用自动画质上限。 
- 多密钥规则可针对 `AUDIO`、`SD`、`HD`、`UHD1` 或 `UHD2` 设置。未列入规则的档位不会获得解密密钥。 
- `max_stream_per_user: 0` 表示对此 Token 禁用 DRM-X 的并发播放数限制。 
- `expiresInSeconds` 是 DRM License Token 的有效期（60–7200 秒），与 DRM 许可证有效期和允许播放时长分别设置。 



**在服务器端设置自定义策略**将服务器确认的订阅套餐、租赁有效期、内容分级或设备类别映射到已批准的策略对象。不要直接转发浏览器或移动客户端提交的策略。

<!-- Canonical: https://docs.drm-x.com/zh-Hans/license-service/policies -->
<!-- Language: zh-Hans -->
