DRM-X 6.0 鸽子和橄榄枝标志DRM-X 6.0文档
◎ 简体中文

Tencent Cloud COS 配置教程

使用限定权限的 CAM 凭据、浏览器 CORS 和加密媒体分发,将 Tencent Cloud COS 连接到 DRM-X 6.0,并验证上传和播放。

查看 Markdown在线示例更新于 2026-11-04
将 Tencent Cloud COS 连接到 DRM-X 6.0。创建专用存储桶,为程序子用户授予加密内容的访问权限,配置 CORS 和 HTTPS 分发,然后验证上传和受保护播放。

截图使用腾讯云中文控制台,配置与 DRM-X 实测流程一致。账号信息已排除;连接表单使用示例标识,凭据字段保持空白。请结合每张图下方的说明操作,并替换为您自己的配置值。

1. 创建 COS 存储桶#

  1. 打开腾讯云控制台 → 对象存储 COS。如果尚未开通 COS,请阅读计费条款后开通。存储容量优惠不代表请求次数和出网流量也免费。
  2. 选择创建存储桶,输入唯一名称,并选择适合分发源站的地域。记录完整桶名(含数字 APPID 后缀)和地域代码,例如 ap-hongkong。
  3. 选择私有读写。经常播放的内容使用标准存储。本教程使用一个专用桶,并将 DRM 加密输出放在 protected/ 目录中。原始视频和其他私有文件应存放在别处。
COS 已选择私有读写权限
选择私有读写。保持存储桶为私有;第 4 步只为加密媒体目录授予读取权限。

2. 创建限定权限的程序凭据#

在访问管理 CAM → 用户中创建专用子用户,启用编程访问,无需开启控制台登录。完成腾讯云安全验证后,仅授予此连接需要的桶和对象操作权限。妥善保存 SecretId 和 SecretKey,仅在已登录的 DRM-X 云存储表单中填写。

CAM 已勾选编程访问,未勾选控制台访问
勾选编程访问。此存储专用子用户不需要勾选腾讯云控制台访问。

在访问管理 CAM → 策略 → 新建自定义策略中,使用 JSON 编辑器填写下方策略,然后将此自定义策略关联到专用子用户。实测通过的 COS 资源语法为 qcs::cos:REGION:uid/APPID:BUCKET-APPID/...;请使用 uid/,不要使用 appid/,并填写桶所属账号的数字 APPID。

可使用以下自定义 CAM 策略作为起点。请将 REGION、APPID 和 BUCKET-APPID 替换为自己的值。列出桶内对象的权限用于连接验证和文件浏览;对象操作限制在 protected/* 内,用于上传、元数据检查、复制、重命名和删除。COS 使用源对象的 GetObject 权限及目标对象的 PutObject 权限来授权复制操作。

{
  "version": "2.0",
  "statement": [
    {
      "effect": "allow",
      "action": ["cos:GetBucket", "cos:HeadBucket"],
      "resource": ["qcs::cos:REGION:uid/APPID:BUCKET-APPID/*"]
    },
    {
      "effect": "allow",
      "action": ["cos:GetObject", "cos:HeadObject", "cos:PutObject", "cos:DeleteObject"],
      "resource": ["qcs::cos:REGION:uid/APPID:BUCKET-APPID/protected/*"]
    }
  ]
}

不要使用主账号密钥,也不要关联可管理整个账号的管理员策略。不要将密钥对放入源代码、截图、播放器页面或支持日志中。

3. 配置浏览器 CORS#

打开存储桶 → 安全管理 → 跨域访问 CORS 设置 → 添加规则。每行填写一个来源或请求头。以下值用于 DRM-X Console 和在线测试播放器;集成自己的播放器网站时,请加入该网站的 HTTPS 来源。

字段值
来源 Originhttps://6.drm-x.com
https://multi-drm.drm-x.com
https://developer.drm-x.com
操作 MethodsPUT, GET, HEAD
Allow-Headers*
Expose-HeadersETag
Content-Length
Content-Range
Accept-Ranges
x-cos-request-id
Max-Age600
Vary: Origin已开启
已保存的 COS CORS 来源、方法、请求头和缓存设置
保存后,检查三个来源、PUT / GET / HEAD、允许的请求头 *、五个暴露的响应头、600 秒缓存,以及已开启 Vary。图中是上传和播放测试实际使用的已保存规则。

来源包含协议和主机名,不包含页面路径或末尾斜杠。上面的通配符允许请求头(包括签名上传使用的元数据),并非允许任意网站。CORS 不授予对象访问权限,也不能代替 CAM 策略或桶策略。

4. 配置加密媒体分发#

保持桶的基础权限为私有。在权限管理 → Policy 权限设置 → 添加策略中,仅允许匿名用户对 protected/* 执行 GetObject、HeadObject 和 OptionsObject。不要开放公开上传、删除或桶列表权限。匿名用户只能读取加密字节;正确打包加密的媒体仍需有效 DRM 许可证才能解密。

选择所有用户(可匿名访问)、指定目录和自定义策略。在下一页保持允许,资源路径填写 protected/*,只添加下图中的三个操作。检查授权范围后,再选择完成。

匿名分发仅选择 GetObject、HeadObject 和 OptionsObject
公开分发策略只包含这三个操作:GetObject、HeadObject 和 OptionsObject。上传权限由第 2 步的身份认证 CAM 策略单独授予。

使用指向此桶的 HTTPS 分发源站。默认源站格式为 https://BUCKET-APPID.cos.REGION.myqcloud.com。腾讯云会限制较新存储桶使用默认域名在浏览器中预览。请检查实际播放清单和分片响应;用于生产分发时,应按腾讯云域名指南配置自己的 HTTPS 源站或 CDN 域名及证书。

使用 CDN 时,保留对象路径,并为相同的播放器来源配置 CORS 响应。转发或正确处理 Range 请求。仅配置 DNS CNAME 并不能完成 HTTPS 证书或源站访问配置。

5. 在 DRM-X 中连接存储桶#

打开云存储 → 连接存储,选择 Tencent Cloud COS,然后填写以下字段。

DRM-X 字段示例或来源
显示名称Tencent COS
存储桶名称BUCKET-APPID
地域ap-hongkong
受保护内容基础路径protected
公开 URL 前缀https://media.example.com/protected
SecretId / SecretKey专用 CAM 子用户的密钥对

在对象键和分发 URL 中分别包含一次 protected。例如,对象 protected/video/dash-cenc/manifest.mpd 必须能够通过 https://media.example.com/protected/video/dash-cenc/manifest.mpd 访问。公开 URL 字段应填写稳定的分发前缀,不应填写临时签名 URL 或地域级 S3 API 地址。

DRM-X 腾讯云 COS 连接字段,桶名与分发 URL 均为示例
选择 Tencent Cloud COS,填写包含 APPID 的完整桶名,并使用与桶一致的地域。图中示例使用 ap-hongkong 和 protected。请将 https://media.example.com/protected 替换为实际的 HTTPS 分发前缀。

选中设为 CLI 默认上传目标,使新建的 Packager 任务使用 COS,然后选择保存并验证。已有加密输出包仍使用原来的目标。即使已取消 1AICLOUD,客户自己连接且处于有效、已验证状态的云存储仍可使用。

DRM-X 凭据字段、默认上传复选框及保存并验证按钮
在这里填写专用子用户的 SecretId 和 SecretKey;截图中这两个字段有意留空。勾选设为 CLI 默认上传目标,然后选择保存并验证。

6. 测试上传和受保护播放#

  1. 确认连接显示为已验证。这只检查服务器能否列出桶内对象,并不证明浏览器具有上传权限或能够公开播放。
  2. 在云存储页面上传一个 DRM-X 加密输出包中的小型加密文件。确认 DRM-X 和 COS 中均显示该文件名及大小。这一步验证浏览器 CORS 和签名 PUT 请求。
  3. 新建 Packager 任务并启用云上传。检查预检输出是否显示 Tencent Cloud COS 及目标桶,然后完成加密、上传和发布。
  4. 在未登录云控制台的情况下检查已发布的播放清单和分片。GET/HEAD 应成功,受支持的字节范围请求应返回 206 Partial Content。
  5. 在 DRM-X 开发者工具中选择新的 Content ID 及其 COS 发布版本,签发临时 DRM License Token,然后打开 Universal Player。确认视频和音频实际播放、时间前进且可以跳转。不要分享令牌,也不要仅因播放清单可下载就认定播放成功。

如果 Edge 播放可能使用 PlayReady,请选择 Packager 的最大兼容输出,使输出包同时包含 dash-cenc 和 cmaf-cbcs 播放清单。设备可能支持 PlayReady/CENC,但不支持 PlayReady/CBCS;应测试合适的播放清单,不要将这种兼容性差异误判为存储故障。

2026 年 11 月 4 日已完成验证:两个短视频加密输出包成功上传到 COS;播放清单与分片读取、字节范围响应、CORS 限制、Edge 中的 Widevine/CBCS 播放,以及 PlayReady/CENC 播放和跳转均通过。此次完成的测试不包含浏览器选文件上传;正式使用浏览器上传前,请在自己的浏览器中执行第 6.2 步。

故障排查#

  • 连接验证被拒绝:检查完整桶名、地域、密钥对和 GetBucket 权限。资源标识中应使用此桶所属账号的 APPID。
  • 浏览器上传失败:检查是否允许 https://6.drm-x.com 发起 PUT 跨域请求、是否允许所需请求头,以及对象写入权限。重试以获取新的签名 URL。
  • 上传成功但播放失败:检查分发前缀、匿名或 CDN 读取权限、播放清单与分片 URL、HTTPS 证书、CORS 和 Range 响应,再单独查看播放器的 DRM 许可证错误。
  • Packager 仍显示 1AICLOUD:将 COS 设为默认目标后新建任务。恢复旧任务时,会继续使用该加密输出包已记录的目标。

腾讯云参考文档#