DRM-X 6.0 ডন ও জলপাই শাখা লোগোDRM-X 6.0ডকুমেন্টেশন
◎ বাংলা

ব্যাকএন্ড প্রোগ্রামিং ভাষার উদাহরণ

একটি নিরাপদ Playback Session API ব্যবহার করে PHP, ASP.NET Core, Node.js, Python, Java, Go ও Ruby-তে DRM-X 6.0 ব্যাকএন্ড ইন্টিগ্রেশনের উদাহরণ দেখুন।

Markdown দেখুনসরাসরি চালানো যায় এমন উদাহরণআপডেট করা হয়েছে
আপনার ব্যাক-এন্ড চালু করতে; ব্যবহার করতে ব্যবহৃত হচ্ছে DRM-X স্বাক্ষর করার নীতি প্রয়োগ করে এনক্রিপ্ট করা হবে। DRM লাইসেন্স ভিন্ন ভিন্ন পথ অনুসরণ করে।
আপনার ব্যাক-এন্ড চালু করতে; ব্যবহার করতে ব্যবহৃত হচ্ছে DRM-X স্বাক্ষর করার নীতি প্রয়োগ করে এনক্রিপ্ট করা হবে। DRM লাইসেন্স ভিন্ন ভিন্ন পথ অনুসরণ করে।

ভাষা-নিরপেক্ষ অনুরোধ#

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
}

আপনার ব্যাক-আপ নির্বাচন করুন#

PHP 8.2+

ইউ. আর. এল. ব্যবহার করো JSON ব্যতিক্রম, HTTPS-শুধুমাত্র প্রোটোকল, ১২ সেকেন্ডের একটি নির্ধারিত ও স্পষ্ট প্রতিক্রিয়ামূলক প্রতিক্রিয়া। সম্পূর্ণ হয়েছে। PHP অ্যাপটি অন্তর্ভুক্ত, লগ-ইন, সরাসরি-বার্তা, টোকেন-proxy, ডায়াগনস্টিক এবং মুক্তি।

সঞ্চালন (_R) PHP নমুনা

ASP.NET Core

সরবরাহকৃত অপশন ব্যবহার করুন বৈধ পাসওয়ার্ড, টাইপ করা হয়েছে HttpClient- বাতিল, JsonContentএবং শেষ সহায়তাকারী। কনফিগারেশনের মান অতি সরল। প্রথমবার গোপন বিকল্পের সাথে রানার মাধ্যমে পরিচালিত হয়ে মন্তব্যের মাধ্যমে।

Node.js / TypeScript

ব্যবহার fetch সহ AbortSignal.timeoutকনফিগারেশন, শুধুমাত্র-SD কনফিগারেশন ও স্কিমা সংক্রান্ত বিকল্প প্রদর্শন করা হবে Cache-Control: no-store.

Python 3.11+

ব্যবহৃত HTTPS Colplet'র সাথে ক্লায়েন্ট JSON সিরিয়ালাইজেশন, স্ট্যাটাস চেক, এবং প্রোডাকশনের সময় গোপন ইঞ্জেকশন।

Java 21+

ব্যবহার HttpClient অনুরোধের পরে বার্তা প্রেরণ করা হয়েছে, বৈধ পরিচয় সহ উল্লিখিত হয়েছে JSON- আর অবিশ্বস্ত উৎসের কোন সমাধান নেই।

Go or Ruby

একটি অনুরোধ কনটেক্সট/timeouth ব্যবহার করুন JSON ফিল্ড, কঠোর অবস্থা যাচাই, এবং কখনো পরিচয় পত্রপত্রপত্রের অবস্থা প্রদর্শন করা হবে না ।

মানচিত্রের ব্যবসায়ের দিক#

অনুরোধ করার ক্ষেত্রউৎস
contentIdআপনার ক্যাটালগ থেকে একটি প্রকাশ ফাইল এর সার্ভার ম্যাপিং থেকে সার্ভারের ম্যাপিং.
subjectব্যবহারকারীর পরিচয় প্রমাণ করা যাচ্ছে না ID; কোন ব্রাউজার-প্রজেক্ট পরিচয় নেই।
licensePolicyTemplateবিশ্বস্ত পরিকল্পনা, ভাড়া, অবশ্যই অথবা বিষয়বস্তু টাইর সার্ভার ম্যাপিং।
drmSystemসার্টিফিকেট পরীক্ষা করুন, সীমিত হওয়ার ফলে ক্লায়েন্ট ID যাচাই করা হয়েছে DRM আপনার সিস্টেম অ্যাডমিনস্ট্রেটর সমর্থন করে.
sessionIdএই পরিস্থিতির জন্য আপনার ব্যাক-এন্ড থেকে আরম্ভ করার অপ্রত্যাশিত বর্ণনা ।

শুধুমাত্র প্রথমবারের মত সরাসরি কোডের মান ব্যবহার করা হবে#

নমুনাটি ইচ্ছা করে সহজে বৈশিষ্ট্যের ছোট আকারে সেট তৈরি করা যায় । প্রোডাকশনের জন্য, ডকুমেন্টস/গোপনীয় মানের বিকল্প আলাদা করে রাখা, হার্ড-কোডকৃত গোপনীয়তা সরিয়ে, ক্লায়েন্টের সাথে যোগাযোগ করুন এবং শুধুমাত্র অনুমোদন করুন। license-tokens:create.

সার্ভারের প্রশিক্ষণ- পর্ব

উদাহরণ হিসেবে বলা যায়, এই কল করার আগে প্রদর্শক এবং বানান পরীক্ষা করুন। PHP এবং ASP.NET প্রথম সঞ্চালনের জন্য সরাসরি কোডের মান দেখাও; স্থানান্তর করো Access Key উৎপাদনের জন্য একটি গোপন ব্যবস্থাপক আবশ্যক এবং কোনো হেডার নির্ধারণের অনুরোধ জানানো হয় না। হেডার অথবা সফল বৈশিষ্ট্যের অংশ।

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);

সম্পূর্ণ এক্সেকিউটেবল থেকে আরম্ভ করা হবে; লগ-ইন, সরাসরি-ইন মোড, টোকেন-কোড, আবদ্ধ ডায়াগনস্টিক মোড, প্রতিরোধিত ডায়াগনস্টিক এবং প্রকাশ করা হবে।

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 / #
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());
১.২৩+ যাও
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) }