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

后端语言示例

了解共同的播放流程,找到 Node.js、Django、Laravel、PHP、ASP.NET 或 Java 中需要修改的具体回调。

查看 Markdown在线示例更新于 2026-09-25

由您的网站决定谁能观看#

保留您的登录、购买、会员和课程报名系统。应用提供当前用户和允许访问的 Content ID。SDK 调用 DRM-X,播放器加载受保护的视频。

一次接入现有应用

登录和权限判断由您负责。SDK 和播放器负责受保护播放。

  1. 保留现有登录系统

    观众通过您现有的网站登录。

  2. 接入您的内容查询

    应用检查访问权限,并返回所选课时对应的 DRM-X Content ID。

  3. 通过 SDK 发起调用

    后端 SDK 使用服务器凭据向 DRM-X 请求经过授权的播放。

  4. 显示播放器

    播放器获取 DRM 许可证,并播放已发布的加密内容。

理解两种视频 ID#

值示例来源
网站视频 IDlesson-123您的课时、商品或视频记录。
DRM-X Content IDyour-published-content-id在 DRM-X 中发布的受保护内容。
用户 IDcustomer-456经过身份验证的登录会话。

使用现有数据库、API 或应用代码,将课时关联到对应的 Content ID。找到视频并不代表该用户有权观看;返回内容前必须检查权限。

先准备一次,再接入网站#

  1. 加密并发布一个视频,然后复制其 Content ID。
  2. 为同一环境创建播放凭据。在服务器端使用 Site ID、Site Key 和 Access Key。
  3. 下载完整集成包或对应平台的集成包。使用包管理器安装其中的 SDK。
  4. 接入用户及内容权限回调,然后将播放器添加到页面。

SDK 使用已经发布的内容。它不替代打包加密工具或支付系统。安装第三方运行时依赖时可能需要互联网连接。

选择编程语言#

选择编程语言,查看对应的修改位置。

Node.js / Express

修改您的应用: server.mjs

接入: authorize(userId, videoId)

返回允许访问的内容映射或 null。从现有登录中间件中读取用户。

打开教程与安装命令 →

Python / Django

修改您的应用: authorization.py

接入: authorize(user, video_id)

返回包含 content_id 的字典,或返回 None。在 settings.py 中将其注册为 DRMX['AUTHORIZE']。

打开教程与安装命令 →

PHP / Laravel

修改您的应用: app/Services/DrmxAccess.php

接入: ContentAuthorizer.authorize(user, videoId)

返回允许访问的内容数组或 null。在 AppServiceProvider 中绑定您的服务。

打开教程与安装命令 →

原生 PHP

修改您的应用: index.php

接入: findAuthorizedVideo(userId, videoId)

返回允许访问的内容数组或 null。接入现有 PHP 会话中的用户身份。

打开教程与安装命令 →

C# / ASP.NET Core

修改您的应用: Program.cs

接入: QuickStartCatalog.FindAuthorizedVideoAsync

返回 QuickStartVideo 或 null。IDrmXContentEntitlement 会将请求中的 Content ID 与该结果进行核对。

打开教程与安装命令 →

C# / ASP.NET Framework

修改您的应用: App_Code/DrmXPlayback.cs

接入: ApplicationServices.Authorize

仅当用户、Content ID 和内容类型均通过授权检查时返回 true。这是 Windows/IIS 的源码适配器。

打开教程与安装命令 →

Java / Spring Boot

修改您的应用: DrmxAccess.java

接入: ContentEntitlement.authorize(userId, videoId)

返回 Optional<AuthorizedVideo> 或 Optional.empty()。将控制器和授权 bean 连接到现有数据访问层。

打开教程与安装命令 →

配置服务器#

示例环境变量
Node, Django, Java, PHP SDK, LaravelDRMX_SITE_ID, DRMX_SITE_KEY, DRMX_ACCESS_KEY
ASP.NET Core 和 ASP.NET FrameworkDRMX_PLAYBACK_SITE_ID, DRMX_PLAYBACK_SITE_KEY, DRMX_PLAYBACK_ACCESS_KEY

在服务器进程中加载这些值。Content ID 是每个视频对应的业务数据;不要为了切换用户或视频而覆盖共享凭据或全局配置。策略选择应保留在服务器端。

PHP:接入现有网站#

下载此平台集成包

包含预览版 SDK、应用示例和源码。请保留解压后的目录结构。

所有平台与完整集成包 · 了解集成流程

  1. 配置

    服务器环境

    设置 DRMX_SITE_ID、DRMX_SITE_KEY 和 DRMX_ACCESS_KEY。

  2. 授权examples/sdk/php/index.php

    修改 findAuthorizedVideo($userId, $videoId),并从现有会话中读取用户 ID。

  3. 嵌入

    您的课程页面

    复用播放器标记,并在会话端点中保留选定的 videoId。

cd examples/sdk/php
composer install
# Set server credentials and DRMX_LOCAL_DEMO=1 for a localhost demo only.
php -S 127.0.0.1:8106 index.php

首次测试时,在 findAuthorizedVideo 中替换 your-published-content-id。打开 http://127.0.0.1:8106/?videoId=1,使用 Local demo sign in 登录。PHP 需要 cURL 和 ZIP 支持;请使用 PHP 8.2 或更高版本。

接入您的应用时,用实际查询替换演示函数。下方的数据访问调用仅作示例,请使用您的数据库实现:

function findAuthorizedVideo(string $userId, string $videoId): ?array {
    $video = customerFindAuthorizedVideo($userId, $videoId);
    if ($video === null) return null;
    return ['contentId' => $video['drmx_content_id'],
            'contentType' => 'vod', 'title' => $video['title'],
            'policy' => 'multi-tier-standard'];
}

从正常的服务器端身份验证中读取 $userId。保留示例中的源检查、请求验证和准确的内容/类型检查。选择与已发布内容匹配的策略。PlaybackClient 负责发送 DRM-X 请求,无法推断您的购买规则。

其他语言与 API 集成#

Go、Ruby 和其他服务器语言可以在验证用户身份并检查内容访问权限后调用播放会话 API。此版本不包含 Go 或 Ruby SDK 库。对于上面的七种集成方式,建议优先使用随附的 SDK。

上线前检查#

  • 以有权限的用户登录,并在支持的浏览器中播放已发布的视频。
  • 测试未登录和未付费用户,再测试权限被撤销或到期的情况。新的会话请求必须被拒绝。
  • 尝试修改浏览器中的 Content ID 或网站视频 ID。服务器必须检查新的选择。
  • 设置准确的公共 HTTPS 源,保留框架的会话/CSRF 保护,并禁用演示身份代码。

已有会话和 DRM 许可证具有各自的有效期。新请求会检查权限变更,但不会清除已经签发的许可证。

PHP:运行完整演示网站#

试用 PHP 在线演示 · 下载完整 PHP 演示 · SHA-256

若要在现有网站中通过 Composer 进行小规模集成,请选择上面的 PHP SDK 示例。若需要可直接运行的网站,以及播放列表、令牌代理和诊断示例,请选择此完整演示。完整演示使用源码适配器,需要 PHP 8.2+ 和 cURL,但不需要 Composer 或数据库。两种方式都将凭据保留在您的服务器上,并要求您实现权限检查。

  1. 首次播放config/drmx.php

    设置 siteId、siteKey、accessKey、content.id、content.type 和匹配的 licensePolicyTemplate。保留数组中的其他设置。

  2. 您的客户src/bootstrap.php

    将 authenticated_user_id() 接入您的登录系统;用实时购买、会员或报名检查替换 user_can_play_content()。

  3. 您的视频目录src/bootstrap.php + public/index.php

    用现有视频查询替换演示目录辅助函数。只向页面输出允许访问的 Content ID 和类型;每次会话请求仍须在服务器端检查。

# Windows, inside the extracted drmx-php-sample folder:
powershell -NoProfile -ExecutionPolicy Bypass -File .\run-local.ps1
# macOS / Linux:
bash ./run-local.sh

打开 http://127.0.0.1:8086/ 并点击 Play。在线播放会自动解析已注册的播放清单(manifest)。本地演示会自动登录一个测试观众;这仅用于首次播放验证。

用于您的网站时,请在 config/drmx.php 中将 demo.allowLogin、demo.autoAuthenticateLocalhost 和 demo.autoAuthenticatePublicDemo 设为 false,或禁用对应的进程变量。使用您自己的登录系统和实时权限检查;不要将演示会话中的授权列表当作购买数据库。随附的 public/api/playback-session.php 和 playback-release.php 处理播放 API;请保留其请求验证和内容绑定。将网站文档根目录设为 public/,并使用 Web 服务器路由。内置启动器仅用于本地测试。

示例目录辅助函数包括 demo_content_id()、demo_content_type()、player_playlist() 和 configured_content()。多视频网站应从现有视频目录中查询这些值;权限检查必须验证用户所选的具体内容。您不需要将购买记录同步到 DRM-X 数据表。已有 DRM 许可证具有各自的有效期;新会话会重新检查权限是否已撤销。

完整的策略、部署、令牌代理及原生离线说明见随附 README。发布前,请通过 HTTPS 在支持的浏览器中测试授权播放、被拒绝或已撤销权限的用户、内容替换和 Stop。

无论使用哪种存储,集成都只需 Content ID#

流媒体集成中不需要填写播放清单 URL。使用 1aicloud 或已配置的 S3 存储时,DRM-X 会使用发布加密输出包时记录的媒体 URL。若将加密文件上传到您自己的服务器,请先在 DRM-X 注册其 DASH/HLS 媒体 URL。随后在 PHP、ASP.NET 或其他集成中使用同一个 Content ID。请求播放前,您的服务器仍需检查当前用户的权限。

  1. 发布或注册,只需一次DRM-X content settings

    确认已为您的 Content ID 注册正确的受保护 DASH/HLS 媒体 URL。

  2. 连接您的网站

    您的播放权限回调

    检查登录状态以及购买、会员或课程报名权限,返回允许访问的 Content ID。

  3. 播放DRM-X playback session

    DRM-X 解析已发布的加密输出包,并返回合适的播放清单(manifest)和 DRM License Token。

若找不到已注册的播放清单(manifest),请在 DRM-X 中更正发布设置或媒体 URL 注册信息。不要使用浏览器任意传入的 URL 作为备用地址。完整 PHP 演示中的原生离线端点是单独的高级示例;其当前所需的手动映射见 advanced/OFFLINE.md。