ব্যাকএন্ড প্রোগ্রামিং ভাষার উদাহরণ
সাধারণ প্লেব্যাক প্রক্রিয়া বুঝুন এবং Node.js, Django, Laravel, PHP, ASP.NET বা Java-তে কোন কলব্যাক বদলাতে হবে তা খুঁজুন।
কে দেখতে পারবে তা আপনার ওয়েবসাইট নির্ধারণ করে#
আপনার বর্তমান লগইন, কেনাকাটা, সদস্যপদ ও কোর্সে ভর্তির ব্যবস্থা বজায় রাখুন। অ্যাপ বর্তমান ব্যবহারকারী ও অনুমোদিত Content ID সরবরাহ করে। SDK DRM-X-কে কল করে এবং প্লেয়ার সুরক্ষিত ভিডিও লোড করে।
আপনার বর্তমান অ্যাপের সঙ্গে একবার সংযোগ
লগইন ও অনুমতির সিদ্ধান্ত আপনার দায়িত্ব। SDK ও প্লেয়ার সুরক্ষিত প্লেব্যাক পরিচালনা করে।
- বর্তমান লগইন বজায় রাখুন
দর্শক আপনার বর্তমান ওয়েবসাইট দিয়ে লগইন করেন।
- নিজের তথ্য অনুসন্ধান যুক্ত করুন
আপনার অ্যাপ প্রবেশাধিকার যাচাই করে নির্বাচিত পাঠের DRM-X Content ID ফেরত দেয়।
- SDK দিয়ে কল করুন
ব্যাকএন্ড SDK সার্ভারের শংসাপত্র দিয়ে DRM-X-এর কাছে অনুমোদিত প্লেব্যাক চায়।
- প্লেয়ার দেখান
প্লেয়ার DRM লাইসেন্স নিয়ে প্রকাশিত এনক্রিপ্ট করা কনটেন্ট চালায়।
দুটি ভিডিও ID বুঝুন#
| মান | উদাহরণ | কোথা থেকে আসে |
|---|---|---|
| ওয়েবসাইটের ভিডিও ID | lesson-123 | আপনার পাঠ, পণ্য বা ভিডিওর রেকর্ড। |
| DRM-X Content ID | your-published-content-id | DRM-X-এ প্রকাশিত সুরক্ষিত কনটেন্ট। |
| ব্যবহারকারীর ID | customer-456 | আপনার পরিচয় যাচাই করা লগইন সেশন। |
বর্তমান ডেটাবেস, API বা অ্যাপের কোড দিয়ে পাঠকে তার Content ID-এর সঙ্গে যুক্ত করুন। ভিডিও খুঁজে পাওয়া মানেই এই ব্যবহারকারী সেটি দেখতে পারবেন এমন নয়; ফেরত দেওয়ার আগে অনুমতি যাচাই করুন।
একবার প্রস্তুতি নিন, তারপর ইন্টিগ্রেট করুন#
- একটি ভিডিও এনক্রিপ্ট করে প্রকাশ করুন এবং এর Content ID কপি করুন।
- একই পরিবেশের জন্য প্লেব্যাক শংসাপত্র তৈরি করুন। সার্ভারে Site ID, Site Key ও Access Key ব্যবহার করুন।
- সম্পূর্ণ কিট অথবা আপনার প্ল্যাটফর্মের কিট ডাউনলোড করুন। প্যাকেজ ম্যানেজার দিয়ে এর SDK ইনস্টল করুন।
- ব্যবহারকারী ও কনটেন্টের অনুমতি যাচাইয়ের কলব্যাক যুক্ত করুন, তারপর পৃষ্ঠায় প্লেয়ার যোগ করুন।
SDK আগে প্রকাশিত কনটেন্টের ওপর কাজ করে। এটি packager বা আপনার পেমেন্ট ব্যবস্থার বিকল্প নয়। তৃতীয় পক্ষের runtime dependency ইনস্টল করার সময় ইন্টারনেট লাগতে পারে।
আপনার ভাষা বেছে নিন#
নির্দিষ্ট ভাষার সম্পাদনার নির্দেশচিত্র দেখতে একটি ভাষা বেছে নিন।
Node.js / Express
আপনার অ্যাপ সম্পাদনা করুন: server.mjs
যুক্ত করুন: authorize(userId, videoId)
অনুমোদিত কনটেন্টের ম্যাপিং অথবা null ফেরত দিন। বর্তমান login middleware থেকে ব্যবহারকারী পড়ুন।
Python / Django
আপনার অ্যাপ সম্পাদনা করুন: authorization.py
যুক্ত করুন: authorize(user, video_id)
content_id-সহ dictionary অথবা None ফেরত দিন। settings.py-তে এটি DRMX['AUTHORIZE'] হিসেবে নিবন্ধন করুন।
PHP / Laravel
আপনার অ্যাপ সম্পাদনা করুন: app/Services/DrmxAccess.php
যুক্ত করুন: ContentAuthorizer.authorize(user, videoId)
অনুমোদিত কনটেন্টের array অথবা null ফেরত দিন। AppServiceProvider-এ সার্ভিস বাইন্ড করুন।
ফ্রেমওয়ার্ক ছাড়া PHP
আপনার অ্যাপ সম্পাদনা করুন: index.php
যুক্ত করুন: findAuthorizedVideo(userId, videoId)
অনুমোদিত কনটেন্টের array অথবা null ফেরত দিন। বর্তমান PHP session identity যুক্ত করুন।
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() ফেরত দিন। controller ও entitlement bean-কে বর্তমান repository-এর সঙ্গে যুক্ত করুন।
সার্ভার কনফিগার করুন#
| উদাহরণসমূহ | এনভায়রনমেন্ট ভেরিয়েবল |
|---|---|
| Node, Django, Java, PHP SDK, Laravel | DRMX_SITE_ID, DRMX_SITE_KEY, DRMX_ACCESS_KEY |
| ASP.NET Core ও Framework | DRMX_PLAYBACK_SITE_ID, DRMX_PLAYBACK_SITE_KEY, DRMX_PLAYBACK_ACCESS_KEY |
এগুলো সার্ভার process-এ লোড করুন। Content ID প্রতিটি ভিডিওর আলাদা ব্যবসায়িক মান; ব্যবহারকারী বা ভিডিও বদলাতে শেয়ার করা শংসাপত্র বা global configuration বদলাবেন না। নীতি নির্বাচন সার্ভারে রাখুন।
PHP: আপনার বর্তমান ওয়েবসাইট যুক্ত করুন#
Preview SDK, অ্যাপের উদাহরণ ও সোর্স। এক্সট্র্যাক্ট করা ফোল্ডারের কাঠামো বজায় রাখুন।
সব প্ল্যাটফর্ম ও সম্পূর্ণ কিট · ইন্টিগ্রেশন প্রক্রিয়া বুঝুন
- কনফিগার করুন
সার্ভারের পরিবেশ
DRMX_SITE_ID, DRMX_SITE_KEY ও DRMX_ACCESS_KEY নির্ধারণ করুন।
- অনুমোদন দিন
examples/sdk/php/index.phpfindAuthorizedVideo($userId, $videoId) সম্পাদনা করুন এবং বর্তমান সেশন থেকে ব্যবহারকারীর ID পড়ুন।
- এমবেড করুন
আপনার পাঠের পৃষ্ঠা
প্লেয়ারের মার্কআপ পুনরায় ব্যবহার করুন এবং session endpoint-এ নির্বাচিত 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 বা পরবর্তী সংস্করণ ব্যবহার করুন।
আপনার অ্যাপে ডেমো ফাংশনের জায়গায় নিজের তথ্য অনুসন্ধানের কোড দিন। নিচের repository কলটি বোঝানোর জন্য দেওয়া; নিজের ডেটাবেস দিয়ে এটি বাস্তবায়ন করুন:
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 পড়ুন। উদাহরণের origin, অনুরোধ এবং কনটেন্ট ও ধরনের সঠিক মিল যাচাই বজায় রাখুন। প্রকাশিত কনটেন্টের সঙ্গে মেলে এমন নীতি বেছে নিন। PlaybackClient DRM-X অনুরোধ করে; এটি আপনার কেনাকাটার নিয়ম নিজে থেকে জানতে পারে না।
অন্যান্য ভাষা ও API ইন্টিগ্রেশন#
Go, Ruby ও অন্য সার্ভার ভাষা ব্যবহারকারীর পরিচয় এবং কনটেন্টের প্রবেশাধিকার যাচাই করার পর Playback Session API কল করতে পারে। এই রিলিজে Go বা Ruby SDK লাইব্রেরি নেই। ওপরের সাতটি ইন্টিগ্রেশন পদ্ধতির জন্য সঙ্গে দেওয়া SDK ব্যবহার করাই ভালো।
প্রকাশের আগে যাচাই করুন#
- অনুমতি আছে এমন ব্যবহারকারী হিসেবে লগইন করে সমর্থিত ব্রাউজারে প্রকাশিত ভিডিও চালান।
- লগইন না করা ও অর্থ না দেওয়া ব্যবহারকারী পরীক্ষা করুন, তারপর প্রবেশাধিকার বাতিল করুন বা মেয়াদ শেষ করুন। নতুন সেশন অনুরোধ অবশ্যই প্রত্যাখ্যাত হতে হবে।
- ব্রাউজারে Content ID বা ওয়েবসাইটের ভিডিও ID বদলান। সার্ভারকে নতুন নির্বাচন যাচাই করতে হবে।
- সঠিক পাবলিক HTTPS origin নির্ধারণ করুন, ফ্রেমওয়ার্কের session/CSRF সুরক্ষা বজায় রাখুন এবং ডেমো identity code বন্ধ করুন।
বর্তমান সেশন ও DRM লাইসেন্সের নিজস্ব মেয়াদ থাকে। নতুন অনুরোধে অনুমতির পরিবর্তন যাচাই করা হয়; এতে আগে ইস্যু করা লাইসেন্স মুছে যায় না।
PHP: সম্পূর্ণ ডেমো ওয়েবসাইট চালান#
লাইভ PHP ডেমো চেষ্টা করুন · সম্পূর্ণ PHP ডেমো ডাউনলোড করুন · SHA-256
বর্তমান ওয়েবসাইটে Composer-ভিত্তিক ছোট ইন্টিগ্রেশনের জন্য ওপরের PHP SDK উদাহরণ বেছে নিন। প্লেলিস্ট, token-proxy ও ডায়াগনস্টিক উদাহরণসহ চালানোর উপযোগী ওয়েবসাইট চাইলে এই সম্পূর্ণ ডেমো বেছে নিন। সম্পূর্ণ ডেমো একটি সোর্স অ্যাডাপ্টার ব্যবহার করে এবং cURL-সহ PHP 8.2+ প্রয়োজন, তবে Composer বা ডেটাবেস লাগে না। উভয় পদ্ধতিতেই সার্ভারে শংসাপত্র রাখা হয় এবং আপনার নিজস্ব অনুমতি যাচাই প্রয়োজন।
- প্রথমবার চালানো
config/drmx.phpsiteId, siteKey, accessKey, content.id, content.type এবং উপযুক্ত licensePolicyTemplate নির্ধারণ করুন। array-এর বাকি অংশ রাখুন।
- আপনার গ্রাহকেরা
src/bootstrap.phpauthenticated_user_id()-কে আপনার লগইনের সঙ্গে যুক্ত করুন; user_can_play_content()-এর জায়গায় কেনাকাটা, সদস্যপদ বা কোর্সে ভর্তির বর্তমান অবস্থা যাচাই করুন।
- আপনার ভিডিও ক্যাটালগ
src/bootstrap.php + public/index.phpডেমো ক্যাটালগের helper-এর জায়গায় আপনার বর্তমান ভিডিও অনুসন্ধান দিন। শুধু অনুমোদিত Content ID ও ধরন প্রদর্শন করুন; প্রতিটি সেশন অনুরোধে সার্ভারের যাচাই বজায় রাখুন।
# Windows, inside the extracted drmx-php-sample folder:
powershell -NoProfile -ExecutionPolicy Bypass -File .\run-local.ps1
# macOS / Linux:
bash ./run-local.shhttp://127.0.0.1:8086/ খুলে Play চাপুন। অনলাইন প্লেব্যাক স্বয়ংক্রিয়ভাবে নিবন্ধিত ম্যানিফেস্ট নির্ধারণ করে। লোকাল ডেমো একজন পরীক্ষামূলক দর্শককে লগইন করায়; এটি শুধু প্রথম প্লেব্যাক পরীক্ষা।
আপনার ওয়েবসাইটের জন্য config/drmx.php-তে demo.allowLogin, demo.autoAuthenticateLocalhost ও demo.autoAuthenticatePublicDemo-এর মান false করুন, অথবা সমতুল্য process variable বন্ধ করুন। নিজের লগইন ও বর্তমান অনুমতি যাচাই ব্যবহার করুন; ডেমো সেশনের অনুমতির তালিকাকে কেনাকাটার ডেটাবেস হিসেবে রাখবেন না। সঙ্গে দেওয়া public/api/playback-session.php ও playback-release.php প্লেব্যাক API পরিচালনা করে; তাদের অনুরোধ যাচাই ও কনটেন্টের সঙ্গে মিল পরীক্ষা বজায় রাখুন। পাবলিক document root হিসেবে public/ নির্ধারণ করুন এবং ওয়েব সার্ভারের routing ব্যবহার করুন। সঙ্গে দেওয়া launcher লোকাল পরীক্ষার জন্য।
ক্যাটালগের সহায়ক ফাংশনগুলো হলো demo_content_id(), demo_content_type(), player_playlist() ও configured_content()। একাধিক ভিডিওর সাইটে আপনার বর্তমান ক্যাটালগ থেকে এই মানগুলো নির্ধারণ করুন; অনুমতি যাচাইয়ে ঠিক সেই নির্বাচিত কনটেন্টই পরীক্ষা করতে হবে। DRM-X-এর টেবিলে কেনাকাটার রেকর্ড সিঙ্ক করতে হবে না। আগে দেওয়া DRM লাইসেন্সের নিজস্ব মেয়াদ থাকে; নতুন সেশনে প্রবেশাধিকার বাতিল হয়েছে কি না আবার যাচাই করা হয়।
নীতি, হোস্টিং, token-proxy ও নেটিভ অফলাইন ব্যবহারের সম্পূর্ণ তথ্যের জন্য সঙ্গে দেওয়া README দেখুন। রিলিজের আগে HTTPS-এ অনুমোদিত প্লেব্যাক, অনুমতি না থাকা ও বাতিল হওয়া ব্যবহারকারী, কনটেন্ট বদলে দেওয়া, Stop এবং সমর্থিত ব্রাউজার পরীক্ষা করুন।
যে স্টোরেজই ব্যবহার করুন, একই Content ID#
স্ট্রিমিং ইন্টিগ্রেশনে ম্যানিফেস্ট URL দিতে হবে না। 1aicloud বা কনফিগার করা S3 স্টোরেজের ক্ষেত্রে DRM-X প্যাকেজ প্রকাশের সময় সংরক্ষিত মিডিয়া URL ব্যবহার করে। এনক্রিপ্ট করা ফাইল নিজের সার্ভারে আপলোড করলে আগে DRM-X-এ তাদের DASH/HLS মিডিয়া URL নিবন্ধন করুন। তারপর PHP, ASP.NET বা অন্য যেকোনো ইন্টিগ্রেশনে একই Content ID ব্যবহার করুন। প্লেব্যাক চাওয়ার আগে সার্ভারকে তবু বর্তমান ব্যবহারকারীর অনুমতি যাচাই করতে হবে।
- একবার প্রকাশ বা নিবন্ধন করুন
DRM-X content settingsআপনার Content ID-এর জন্য সঠিক সুরক্ষিত DASH/HLS মিডিয়া URL নিবন্ধিত আছে কি না নিশ্চিত করুন।
- ওয়েবসাইট যুক্ত করুন
আপনার অনুমতি যাচাইয়ের কলব্যাক
লগইন এবং কেনাকাটা, সদস্যপদ বা কোর্সে ভর্তি যাচাই করুন। অনুমোদিত Content ID ফেরত দিন।
- চালান
DRM-X playback sessionDRM-X প্রকাশিত প্যাকেজ নির্ধারণ করে উপযুক্ত ম্যানিফেস্ট ও DRM License Token ফেরত দেয়।
নিবন্ধিত ম্যানিফেস্ট না পাওয়া গেলে DRM-X-এ প্রকাশনা বা মিডিয়া URL নিবন্ধন ঠিক করুন। বিকল্প হিসেবে ব্রাউজার থেকে পাঠানো যেকোনো URL যোগ করবেন না। সম্পূর্ণ PHP ডেমোর নেটিভ অফলাইন এন্ডপয়েন্ট একটি আলাদা উন্নত উদাহরণ; এর বর্তমান ম্যানুয়াল ম্যাপিং advanced/OFFLINE.md-তে বর্ণিত আছে।
DRM-X 6.0