Ví dụ theo ngôn ngữ backend
Hiểu quy trình phát chung và tìm callback chính xác cần sửa trong Node.js, Django, Laravel, PHP, ASP.NET hoặc Java.
Trang web của bạn quyết định ai có thể xem#
Giữ hệ thống đăng nhập, mua hàng, thành viên và đăng ký học. Ứng dụng cung cấp người dùng hiện tại và Content ID được phép. SDK gọi DRM-X và trình phát nạp video được bảo vệ.
Kết nối một lần với ứng dụng hiện có
Bạn quản lý đăng nhập và quyết định quyền truy cập. SDK cùng trình phát xử lý phát nội dung được bảo vệ.
- Giữ đăng nhập
Người xem đăng nhập qua trang web hiện có của bạn.
- Kết nối hàm tra cứu của bạn
Ứng dụng kiểm tra quyền và trả về DRM-X Content ID cho bài học đã chọn.
- Gọi qua SDK
SDK backend dùng thông tin xác thực máy chủ để yêu cầu DRM-X cấp quyền phát.
- Hiển thị trình phát
Trình phát nhận giấy phép DRM và phát nội dung mã hóa đã xuất bản.
Hiểu hai loại ID video#
| Giá trị | Ví dụ | Nguồn của giá trị |
|---|---|---|
| ID video của trang | lesson-123 | Bản ghi bài học, sản phẩm hoặc video của bạn. |
| DRM-X Content ID | your-published-content-id | Nội dung bảo vệ được xuất bản trong DRM-X. |
| ID người dùng | customer-456 | Phiên đăng nhập đã xác thực của bạn. |
Liên kết bài học với Content ID bằng cơ sở dữ liệu, API hoặc mã ứng dụng hiện có. Tìm thấy video không có nghĩa người dùng được xem; hãy kiểm tra quyền trước khi trả về.
Chuẩn bị một lần, sau đó tích hợp#
- Mã hóa và xuất bản một video, rồi sao chép Content ID của video.
- Tạo thông tin xác thực phát cho cùng môi trường. Dùng Site ID, Site Key và Access Key trên máy chủ.
- Tải bộ đầy đủ hoặc bộ cho nền tảng của bạn. Dùng trình quản lý gói để cài SDK đi kèm.
- Kết nối callback kiểm tra quyền của người dùng đối với nội dung, rồi thêm trình phát vào trang.
SDK dùng nội dung đã xuất bản. Nó không thay công cụ đóng gói hoặc hệ thống thanh toán. Cài các phụ thuộc runtime của bên thứ ba có thể cần kết nối Internet.
Chọn ngôn ngữ lập trình#
Chọn ngôn ngữ lập trình để xem vị trí cần sửa.
Node.js / Express
Sửa ứng dụng của bạn: server.mjs
Kết nối: authorize(userId, videoId)
Trả về ánh xạ nội dung được phép hoặc null. Đọc người dùng từ middleware đăng nhập hiện có.
Python / Django
Sửa ứng dụng của bạn: authorization.py
Kết nối: authorize(user, video_id)
Trả về dictionary chứa content_id hoặc None. Đăng ký dưới dạng DRMX['AUTHORIZE'] trong settings.py.
PHP / Laravel
Sửa ứng dụng của bạn: app/Services/DrmxAccess.php
Kết nối: ContentAuthorizer.authorize(user, videoId)
Trả về mảng nội dung được phép hoặc null. Đăng ký dịch vụ trong AppServiceProvider.
PHP không dùng framework
Sửa ứng dụng của bạn: index.php
Kết nối: findAuthorizedVideo(userId, videoId)
Trả về mảng nội dung được phép hoặc null. Kết nối danh tính người dùng từ phiên PHP hiện có.
C# / ASP.NET Core
Sửa ứng dụng của bạn: Program.cs
Kết nối: QuickStartCatalog.FindAuthorizedVideoAsync
Trả về QuickStartVideo hoặc null. IDrmXContentEntitlement đối chiếu Content ID được yêu cầu với kết quả đó.
C# / ASP.NET Framework
Sửa ứng dụng của bạn: App_Code/DrmXPlayback.cs
Kết nối: ApplicationServices.Authorize
Chỉ trả về true khi người dùng, Content ID và loại nội dung đều được phép truy cập. Đây là bộ tích hợp mã nguồn cho Windows/IIS.
Java / Spring Boot
Sửa ứng dụng của bạn: DrmxAccess.java
Kết nối: ContentEntitlement.authorize(userId, videoId)
Trả về Optional<AuthorizedVideo> hoặc Optional.empty(). Kết nối controller và bean kiểm tra quyền với lớp truy cập dữ liệu hiện có.
Cấu hình máy chủ của bạn#
| Ví dụ | Biến môi trường |
|---|---|
| Node, Django, Java, PHP SDK, Laravel | DRMX_SITE_ID, DRMX_SITE_KEY, DRMX_ACCESS_KEY |
| ASP.NET Core và ASP.NET Framework | DRMX_PLAYBACK_SITE_ID, DRMX_PLAYBACK_SITE_KEY, DRMX_PLAYBACK_ACCESS_KEY |
Nạp các giá trị trong tiến trình máy chủ. Content ID là dữ liệu riêng của từng video; không ghi đè thông tin xác thực dùng chung hoặc cấu hình toàn cục để đổi người dùng hay video. Giữ việc chọn chính sách trên máy chủ.
PHP: kết nối trang web hiện có#
SDK bản xem trước, ví dụ ứng dụng và mã nguồn. Giữ cấu trúc thư mục sau giải nén.
Mọi nền tảng và bộ đầy đủ · Hiểu quy trình tích hợp
- Cấu hình
Môi trường máy chủ
Đặt DRMX_SITE_ID, DRMX_SITE_KEY và DRMX_ACCESS_KEY.
- Cấp quyền
examples/sdk/php/index.phpSửa findAuthorizedVideo($userId, $videoId) và đọc ID người dùng từ phiên hiện có.
- Nhúng
Trang bài học của bạn
Dùng lại mã đánh dấu trình phát và giữ videoId đã chọn trong endpoint phiên.
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.phpLần thử đầu tiên, thay your-published-content-id trong findAuthorizedVideo. Mở http://127.0.0.1:8106/?videoId=1 và dùng Local demo sign in. PHP cần hỗ trợ cURL và ZIP; dùng PHP 8.2 trở lên.
Trong ứng dụng thực tế, thay hàm demo bằng truy vấn của bạn. Lệnh gọi lớp truy cập dữ liệu sau chỉ là ví dụ; hãy triển khai bằng cơ sở dữ liệu của bạn:
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'];
}Đọc $userId từ xác thực máy chủ thông thường. Giữ kiểm tra origin, xác minh yêu cầu và so sánh chính xác nội dung, loại trong ví dụ. Chọn chính sách khớp nội dung đã xuất bản. PlaybackClient thực hiện yêu cầu DRM-X; nó không thể suy ra quy tắc mua hàng của bạn.
Ngôn ngữ khác và tích hợp API#
Go, Ruby và các ngôn ngữ máy chủ khác có thể gọi API phiên phát sau khi xác thực người dùng và kiểm tra quyền nội dung. Bản này không có thư viện SDK Go hoặc Ruby. Ưu tiên SDK đi kèm cho bảy cách tích hợp nêu trên.
Kiểm tra trước khi đưa vào vận hành#
- Đăng nhập bằng người dùng được phép và phát video đã xuất bản trên trình duyệt được hỗ trợ.
- Thử người chưa đăng nhập và chưa thanh toán, rồi thu hồi quyền hoặc cho quyền hết hạn. Yêu cầu phiên mới phải bị từ chối.
- Thử đổi Content ID trong trình duyệt hoặc ID video của trang. Máy chủ phải kiểm tra lựa chọn mới.
- Đặt đúng origin HTTPS công khai, giữ bảo vệ phiên/CSRF của framework và tắt mã danh tính demo.
Phiên và giấy phép DRM hiện có có thời hạn riêng. Yêu cầu mới kiểm tra thay đổi quyền nhưng không xóa giấy phép đã cấp.
PHP: chạy trang demo đầy đủ#
Thử demo PHP trực tuyến · Tải demo PHP đầy đủ · SHA-256
Chọn ví dụ PHP SDK ở trên để tích hợp nhỏ qua Composer vào trang hiện có. Chọn bản demo đầy đủ nếu cần một trang chạy ngay với ví dụ danh sách phát, proxy token và chẩn đoán. Demo đầy đủ dùng bộ tích hợp mã nguồn, cần PHP 8.2+ và cURL nhưng không cần Composer hoặc cơ sở dữ liệu. Cả hai giữ thông tin xác thực trên máy chủ và yêu cầu bạn triển khai kiểm tra quyền.
- Lần phát đầu tiên
config/drmx.phpĐặt siteId, siteKey, accessKey, content.id, content.type và licensePolicyTemplate phù hợp. Giữ phần còn lại của mảng.
- Khách hàng của bạn
src/bootstrap.phpKết nối authenticated_user_id() với đăng nhập; thay user_can_play_content() bằng kiểm tra hiện tại về giao dịch mua, thành viên hoặc đăng ký khóa học.
- Danh mục video của bạn
src/bootstrap.php + public/index.phpThay hàm hỗ trợ danh mục demo bằng truy vấn video hiện có. Chỉ hiển thị Content ID và loại được phép; giữ kiểm tra máy chủ cho mọi yêu cầu phiên.
# Windows, inside the extracted drmx-php-sample folder:
powershell -NoProfile -ExecutionPolicy Bypass -File .\run-local.ps1
# macOS / Linux:
bash ./run-local.shMở http://127.0.0.1:8086/ và nhấn Play. Phát trực tuyến tự tìm manifest đã đăng ký. Demo cục bộ đăng nhập một người xem thử; đây chỉ là kiểm tra phát lần đầu.
Cho trang thực tế, đặt demo.allowLogin, demo.autoAuthenticateLocalhost và demo.autoAuthenticatePublicDemo thành false trong config/drmx.php, hoặc tắt các biến tiến trình tương ứng. Dùng đăng nhập và kiểm tra quyền hiện tại của bạn; không dùng danh sách quyền trong phiên demo làm cơ sở dữ liệu mua hàng. public/api/playback-session.php và playback-release.php xử lý API phát; giữ kiểm tra yêu cầu và ràng buộc nội dung của chúng. Đặt thư mục gốc công khai là public/ và dùng định tuyến của máy chủ web. Trình khởi chạy đi kèm chỉ dùng để thử cục bộ.
Các hàm hỗ trợ danh mục là demo_content_id(), demo_content_type(), player_playlist() và configured_content(). Với trang có nhiều video, hãy lấy các giá trị này từ danh mục hiện có và kiểm tra quyền đối với đúng nội dung đã chọn. Không cần đồng bộ giao dịch mua vào bảng DRM-X. Giấy phép DRM đã cấp có thời hạn riêng; phiên mới sẽ kiểm tra lại quyền đã bị thu hồi hay chưa.
Xem README đi kèm để biết đầy đủ về chính sách, lưu trữ, proxy token và native offline. Trước phát hành, qua HTTPS và trình duyệt được hỗ trợ, thử phát được phép, người dùng bị từ chối hoặc thu hồi quyền, thay thế nội dung và Stop.
Một Content ID cho mọi loại lưu trữ#
Mã tích hợp streaming không cần nhập URL manifest. Với 1aicloud hoặc S3 đã cấu hình, DRM-X dùng URL phương tiện được lưu khi xuất bản gói. Nếu tải tệp mã hóa lên máy chủ riêng, trước hết đăng ký URL phương tiện DASH/HLS trong DRM-X. Sau đó dùng cùng Content ID trong PHP, ASP.NET hoặc tích hợp khác. Máy chủ vẫn phải kiểm tra quyền hiện tại của người dùng trước khi yêu cầu phát.
- Xuất bản hay đăng ký một lần
DRM-X content settingsXác nhận đã đăng ký đúng URL phương tiện DASH/HLS được bảo vệ cho Content ID của bạn.
- Kết nối trang web của bạn
Callback kiểm tra quyền của bạn
Kiểm tra đăng nhập và quyền mua, thành viên hoặc đăng ký khóa học. Trả về Content ID được phép.
- Phát
DRM-X playback sessionDRM-X xác định gói đã xuất bản và trả về manifest phù hợp cùng DRM License Token.
Nếu không tìm thấy manifest đã đăng ký, sửa thông tin xuất bản hoặc đăng ký URL phương tiện trong DRM-X. Không dùng URL tùy ý do trình duyệt gửi lên làm địa chỉ dự phòng. Endpoint native offline của demo PHP đầy đủ là ví dụ nâng cao riêng; cách ánh xạ thủ công hiện tại được mô tả trong advanced/OFFLINE.md.
DRM-X 6.0