# 为受保护的播放添加可见水印 由可信后端发送水印设置,使用兼容播放器渲染三种可见样式,并验证会话的完整生命周期。 集成教程 为受保护的流媒体播放会话添加与观众相关的可见水印。可选择随机位置、移动对角线、全屏网格,也可组合使用。 [查看请求示例 ↓](#request-a-watermarked-session) 可见水印如何传递给播放器 经过身份验证的后端为会话选择水印文字和图层。 - 01**授权** 确认观众有权观看所请求的内容。 - 02**请求** 在播放会话请求中发送水印和兼容播放器的能力声明。 - 03**渲染** 在可渲染所需图层的播放器中加载已授权的会话。 ## 1. 选择水印图层[#](#choose-watermark-layers) | 图层类型 | 观众看到的效果 | 建议的初始设置 | | --- | --- | --- | | `random-static` | 直立文字在一个位置短暂停留,然后更换位置。 | `intervalSeconds: 8` | | `diagonal` | 在视频画面上沿对角线移动的文字。 | `speed: "slow"` | | `full-screen` | 在视频上叠加重复排列的文字网格。 | `rows: 3`, `columns: 3` | 每个会话中每种类型只能出现一次。可分别设置各图层的不透明度,测试时请使用简短的虚构观众标识。流媒体播放期间,播放器将水印渲染在画面上方。 ## 2. 在后端请求中添加水印[#](#request-a-watermarked-session) 在您的后端验证观众身份及其对所选 Content ID 的访问权限,并在后端生成水印文字。仅在所选播放器实现该能力时转发 `watermarkVersion: 1`。 将这些字段合并到现有的已授权 [播放会话请求](https://docs.drm-x.com/zh-Hans/api-reference/playback-sessions)中,发送到 `POST /api/v1/playback/environments/{environmentId}/sessions`。保留现有 DRM、主体、策略和会话字段,以及其他受支持的能力。 ``` { "platformCapabilities": { "clientPlatform": "web", "watermarkVersion": 1 }, "watermark": { "version": 1, "text": "Demo viewer A104", "layers": [ { "type": "random-static", "opacity": 0.38, "intervalSeconds": 8 }, { "type": "diagonal", "opacity": 0.30, "speed": "slow" }, { "type": "full-screen", "opacity": 0.16, "rows": 3, "columns": 3 } ] } } ``` 文字最多为 512 个 UTF-8 字节,且不超过三行。使用纯文本和一到三种不同的图层。普通流媒体会话可省略 `watermark`。 ## 3. 使用 PHP 示例进行测试[#](#configure-the-php-example) 从 [SDK 水印评估示例](https://developer.drm-x.com/php-sample/sdk-watermark/)开始。在您自己的 PHP 示例副本中,在 `config/drmx.php` 中设置 `watermark` 解析函数。示例在验证观众身份和内容访问权限后调用该函数。 ``` 'watermark' => static function (string $viewerId, string $contentId): array { return [ 'text' => 'Demo viewer A104', 'layers' => [ ['type' => 'random-static', 'opacity' => 0.38], ['type' => 'diagonal', 'speed' => 'slow'], ['type' => 'full-screen', 'opacity' => 0.16], ], ]; }, ``` 生产环境应从自己的已授权观众记录中生成简短的化名标识。将凭据留在后端,并避免在 URL、日志、分析数据和共享缓存中记录观众文字。返回已授权的播放器响应时使用 `Cache-Control: no-store`。 ## 4. 在兼容的播放器上渲染并验证[#](#render-and-verify) 将规范化后的会话响应(包括 `watermark`)交给兼容的 Universal Player。Web 端使用受支持的 `` 组件,使播放器能够管理全屏水印。如果客户端无法渲染必需的图层,请停止播放并释放会话占用。 | 集成 | 可用性 | | --- | --- | | PHP Web 演示 | 评估示例使用兼容的 Web SDK 预览版,可在这里测试三种图层。 | | 公开发布的 SDK 和 CMS 软件包 | 检查实际部署的软件包是否支持 watermark v1。现有下载别名和 LMS 插件可能仍使用较早的播放器版本。 | | 原生和电视平台 | 源码预览版提供针对各平台的渲染器。生产环境要求使用水印前,请验证具体的 SDK 版本和设备。 | 分别测试每种图层及其组合。暂停、跳转、调整尺寸并进入全屏,然后停止播放并确认会话已释放。检查旧版客户端无法启动其不能渲染必需水印的会话。 本教程涵盖流媒体播放中的可见叠加层。离线播放和仅传送视频画面的外部播放需要单独验证。