DRM-X 6.0 logo bồ câu và nhánh ô liuDRM-X 6.0Tài liệu
◎ Tiếng Việt

Ví dụ theo ngôn ngữ backend

DRM-X 6.0 Name PHP, ASP.NET Core, Node.jsPython, Java, Go và Ruby sử dụng một phiên chạy Playback bảo mật API.

Xem MarkdownVí dụ chạy trực tiếpCập nhật 2026-09-05
Hậu phương của bạn quyết định truy cập; DRM-X Áp dụng chính sách đã ký. DRM Bằng lái đi theo đường giao hàng riêng.
Hậu phương của bạn quyết định truy cập; DRM-X Áp dụng chính sách đã ký. DRM Bằng lái đi theo đường giao hàng riêng.

Yêu cầu phụ thuộc ngôn ngữ#

POST /api/v1/playback/environments/{siteId}/sessions
X-DRMX-Client-Id: {siteKey}
X-DRMX-Client-Secret: {accessKey}

{
  "contentId": "trusted-content-id",
  "contentType": "vod",
  "drmSystem": "widevine",
  "subject": "authenticated-user-id",
  "sessionId": "new-id-for-this-attempt",
  "licensePolicyTemplate": "multi-tier-standard",
  "useEnvironmentDefaults": true
}

Chọn hậu phương#

PHP 8.2+

Dùng cURL với JSON Ngoại lệ, HTTPS-Chỉ có giao thức, thời hạn 12 giây, và xử lý phản ứng rõ ràng. PHP Ứng dụng bao gồm đăng nhập, phúc lợi xã hội, trực tiếp, hiệu quả, chẩn đoán, và phát hành.

Chạy PHP mẫu

ASP.NET Core

Dùng các tùy chọn đã cung cấp hợp lệ hóa, gõ HttpClienthủy bỏ, JsonContentvà trợ lý điểm kết thúc. Giá trị cấu hình rõ ràng trong mã cho lần chạy đầu tiên với các lựa chọn quản lý bí mật bình luận.

Node.js / TypeScript

Dùng fetchAbortSignal.timeoutcấu hình chỉ máy phục vụ, trả lời hợp lệ hoá giản đồ, và Cache-Control: no-store.

Python 3. 11+

Dùng a HTTPS Khách hàng có thời hạn rõ ràng, JSON Hàng loạt hóa, kiểm tra tình trạng, và tiêm thuốc bí mật từ thời gian sản xuất.

Java 21+

Dùng HttpClient với yêu cầu thời gian ra, chính xác là các thư ký, xác nhận JSONvà không có chuyển hướng đến những nguồn gốc không đáng tin cậy.

Đi hay Ruby

Dùng ngữ cảnh/ thời hạn yêu cầu, chính xác JSON Các lĩnh vực, kiểm tra tình trạng nghiêm ngặt, và không bao giờ in thẻ ủy nhiệm hoặc phát lại thành công cơ thể phản ứng.

Các giá trị kinh doanh sơ đồ an toàn#

Yêu cầu lĩnh vựcNguồn
contentIdBản đồ máy phục vụ từ danh mục của bạn sang một tập tin được bảo vệ đã xuất ra.
subjectNgười dùng xác thực của bạn ID; không bao giờ có danh tính trình duyệt.
licensePolicyTemplateMáy chủ lập bản đồ từ kế hoạch tin cậy, cho thuê, tất nhiên, hoặc thông tin nội dung.
drmSystemKiểm tra khả năng khách hàng đã kiểm tra, giới hạn DRM hệ thống hỗ trợ cho sự kết hợp của bạn.
sessionIdNhận diện mới được tạo ra bởi hậu phương của bạn cho nỗ lực phát lại này.

Dùng giá trị mã trực tiếp chỉ cho lần chạy đầu#

Các mẫu thử cố tình làm cho các thiết lập nhỏ dễ dàng tìm. Đối với sản xuất, uncomment môi trường ghi chép/người quản lý tài liệu thay thế, loại bỏ các bí mật cứng, xoay khách hàng, và cấp vốn chỉ license-tokens:create.

& Hướng dẫn máy phục vụ

Trong mỗi ví dụ, xác thực người xem và kiểm tra quyền ưu tiên trước cuộc gọi này.PHP vàASP.NET Hiển thị các giá trị mã trực tiếp cho lần chạy đầu tiên; di chuyển cácAccess Key đến một bộ quản lý bí mật để sản xuất và không bao giờ đăng nhập yêu cầu đầu trang hoặc phản ứng thành công cơ thể.

PHP 8.2+
$drmx = [
    'platformApi' => 'https://api6.drm-x.com',
    'siteId' => 'your-development-environment-uuid',
    'siteKey' => 'drmx_your_environment_scoped_client_id',
    'accessKey' => 'paste-your-one-time-access-key',
];

$payload = [
    'contentId' => $trustedContentId,
    'contentType' => 'vod',
    'drmSystem' => $drmSystem,
    'subject' => $authenticatedUserId,
    'playbackMode' => 'streaming',
    'licensePolicyTemplate' => 'multi-tier-standard',
    'useEnvironmentDefaults' => true,
    'maximumQualityTier' => 'auto',
];

$curl = curl_init($drmx['platformApi'] . '/api/v1/playback/environments/' .
    rawurlencode($drmx['siteId']) . '/sessions');
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_THROW_ON_ERROR),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 12,
    CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
    CURLOPT_HTTPHEADER => [
        'Accept: application/json',
        'Content-Type: application/json',
        'X-DRMX-Client-Id: ' . $drmx['siteKey'],
        'X-DRMX-Client-Secret: ' . $drmx['accessKey'],
    ],
]);
$body = curl_exec($curl);

Bắt đầu từ mẫu hoàn chỉnh có thể thực hiện được; nó bao gồm đăng nhập, quyền lợi, chế độ đặc trưng trực tiếp, chế độ thời gian biểu hiệu, chẩn đoán bị hạn chế, và giải phóng xử lý.

Node.js / TypeScript
const response = await fetch(
  `${process.env.DRMX_PLATFORM_API}/api/v1/playback/environments/${
    encodeURIComponent(process.env.DRMX_PLAYBACK_SITE_ID!)
  }/sessions`,
  {
    method: "POST",
    headers: {
      "Accept": "application/json",
      "Content-Type": "application/json",
      "X-DRMX-Client-Id": process.env.DRMX_PLAYBACK_SITE_KEY!,
      "X-DRMX-Client-Secret": process.env.DRMX_PLAYBACK_ACCESS_KEY!,
    },
    body: JSON.stringify({
      contentId: trustedContentId,
      contentType: "vod",
      drmSystem,
      subject: authenticatedUser.id,
      playbackMode: "streaming",
      licensePolicyTemplate: "multi-tier-standard",
      useEnvironmentDefaults: true,
      maximumQualityTier: "auto",
    }),
    signal: AbortSignal.timeout(12_000),
  },
);
const playback = await response.json();
Python 3. 11+
import json, os, urllib.request

payload = json.dumps({
    "contentId": trusted_content_id,
    "contentType": "vod",
    "drmSystem": drm_system,
    "subject": authenticated_user_id,
    "playbackMode": "streaming",
    "licensePolicyTemplate": "multi-tier-standard",
    "useEnvironmentDefaults": True,
    "maximumQualityTier": "auto",
}).encode("utf-8")

url = (
    os.environ["DRMX_PLATFORM_API"] +
    "/api/v1/playback/environments/" +
    os.environ["DRMX_PLAYBACK_SITE_ID"] + "/sessions"
)
request = urllib.request.Request(url, data=payload, method="POST", headers={
    "Accept": "application/json",
    "Content-Type": "application/json",
    "X-DRMX-Client-Id": os.environ["DRMX_PLAYBACK_SITE_KEY"],
    "X-DRMX-Client-Secret": os.environ["DRMX_PLAYBACK_ACCESS_KEY"],
})
with urllib.request.urlopen(request, timeout=12) as response:
    playback = json.load(response)
ASP.NET Core / C#
builder.Services.AddDrmXPlayback(options =>
{
    options.PlatformApi = "https://api6.drm-x.com";
    options.SiteId = "your-development-environment-uuid";
    options.SiteKey = "drmx_your_environment_scoped_client_id";
    options.AccessKey = "paste-your-one-time-access-key";
    options.ApplicationId = "customer-aspnet-website";
    options.LicensePolicyTemplate = "multi-tier-standard";
});

var payload = new {
    contentId = trustedContentId,
    contentType = "vod",
    drmSystem,
    subject = authenticatedUserId,
    playbackMode = "streaming",
    licensePolicyTemplate = "multi-tier-standard",
    useEnvironmentDefaults = true,
    maximumQualityTier = "auto"
};

using var request = new HttpRequestMessage(HttpMethod.Post,
    $"{platformApi}/api/v1/playback/environments/{Uri.EscapeDataString(siteId)}/sessions") {
    Content = JsonContent.Create(payload)
};
request.Headers.Add("X-DRMX-Client-Id", siteKey);
request.Headers.Add("X-DRMX-Client-Secret", accessKey);
using var response = await httpClient.SendAsync(request, cancellationToken);
Java 21 / Spring Services
String payload = objectMapper.writeValueAsString(Map.of(
    "contentId", trustedContentId,
    "contentType", "vod",
    "drmSystem", drmSystem,
    "subject", authenticatedUserId,
    "playbackMode", "streaming",
    "licensePolicyTemplate", "multi-tier-standard",
    "useEnvironmentDefaults", true,
    "maximumQualityTier", "auto"
));

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(platformApi + "/api/v1/playback/environments/" +
        URLEncoder.encode(siteId, StandardCharsets.UTF_8) + "/sessions"))
    .timeout(Duration.ofSeconds(12))
    .header("Accept", "application/json")
    .header("Content-Type", "application/json")
    .header("X-DRMX-Client-Id", siteKey)
    .header("X-DRMX-Client-Secret", accessKey)
    .POST(HttpRequest.BodyPublishers.ofString(payload))
    .build();
HttpResponse<String> response = client.send(request,
    HttpResponse.BodyHandlers.ofString());
Go 1. 23+
payload, _ := json.Marshal(map[string]any{
    "contentId": trustedContentID,
    "contentType": "vod",
    "drmSystem": drmSystem,
    "subject": authenticatedUserID,
    "playbackMode": "streaming",
    "licensePolicyTemplate": "multi-tier-standard",
    "useEnvironmentDefaults": true,
    "maximumQualityTier": "auto",
})

url := platformAPI + "/api/v1/playback/environments/" +
    url.PathEscape(siteID) + "/sessions"
req, _ := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(payload))
req.Header.Set("Accept", "application/json")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-DRMX-Client-Id", siteKey)
req.Header.Set("X-DRMX-Client-Secret", accessKey)
response, err := httpClient.Do(req)
Ruby 3. 3+
uri = URI("#{ENV.fetch('DRMX_PLATFORM_API')}/api/v1/playback/environments/" \
          "#{ERB::Util.url_encode(ENV.fetch('DRMX_PLAYBACK_SITE_ID'))}/sessions")
request = Net::HTTP::Post.new(uri)
request['Accept'] = 'application/json'
request['Content-Type'] = 'application/json'
request['X-DRMX-Client-Id'] = ENV.fetch('DRMX_PLAYBACK_SITE_KEY')
request['X-DRMX-Client-Secret'] = ENV.fetch('DRMX_PLAYBACK_ACCESS_KEY')
request.body = JSON.generate(
  contentId: trusted_content_id,
  contentType: 'vod',
  drmSystem: drm_system,
  subject: authenticated_user_id,
  playbackMode: 'streaming',
  licensePolicyTemplate: 'multi-tier-standard',
  useEnvironmentDefaults: true,
  maximumQualityTier: 'auto'
)
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(request) }