# AWS এবং OBS লাইভ স্ট্রিমিং সেটআপ একটি AWS লাইভ ওয়ার্কফ্লো তৈরি করুন, OBS কনফিগার করুন, DRM প্লেব্যাক পরীক্ষা করুন এবং আপনার ইভেন্টের পরে সংস্থানগুলি বন্ধ করুন৷ এনক্রিপ্ট করা ভিডিও ও DRM লাইসেন্স আলাদা পথে সরবরাহ করা হয় CDN এনক্রিপ্ট করা ভিডিও সরবরাহ করে। আপনার ব্যাকএন্ড দেখার অধিকার যাচাই করে, আর DRM লাইসেন্স পরিষেবা সামঞ্জস্যপূর্ণ ডিভাইসে ডিক্রিপশনের অনুমতি দেয়। - 01**স্টোরেজ / CDN** প্লেয়ারে এনক্রিপ্ট করা মিডিয়া সরবরাহ করে। - 02**আপনার ব্যাকএন্ড** দর্শকের দেখার অনুমতি যাচাই করে এবং DRM-X থেকে প্লেব্যাকের অনুমোদন চায়। - 03**DRM-X** প্লেব্যাকের অনুমোদন যাচাই করে এবং DRM লাইসেন্সের অনুরোধ প্রক্রিয়া করে। - 04**প্লেয়ার + ডিভাইস** ডিভাইসের DRM সিস্টেম ব্যবহার করে লাইসেন্স গ্রহণ করে এবং এনক্রিপ্ট করা মিডিয়া চালায়। আপনার ব্যাক-এন্ড চালু করতে; ব্যবহার করতে ব্যবহৃত হচ্ছে DRM-X স্বাক্ষর করার নীতি প্রয়োগ করে এনক্রিপ্ট করা হবে। DRM লাইসেন্স ভিন্ন ভিন্ন পথ অনুসরণ করে। Trial এবং অর্থপ্রদানকারী অ্যাকাউন্টগুলি লাইভ DRM চ্যানেল তৈরি করতে পারে। এই কর্মপ্রবাহের জন্য একটি S3 স্টোরেজ সংযোগের প্রয়োজন নেই৷ AWS মিডিয়া এনকোডিং, প্যাকেজিং, ডেলিভারি, এবং ধরে রাখা সম্পদের জন্য আলাদাভাবে চার্জ। Delivery path: OBS → AWS Elemental MediaLive → MediaPackage v2 → CloudFront → DRM-X player। DRM-X SPEKE দিয়ে encryption key সরবরাহ করে এবং DRM License Token দিয়ে প্রতিটি দর্শকের অনুমতি যাচাই করে। ## DRM-X এ একটি লাইভ ইভেন্ট তৈরি করুন[#](#create-a-live-event) - গ্রাহক কনসোলে সাইন ইন করুন এবং ইভেন্টের মালিক হবে এমন সংস্থা এবং পরিবেশ নির্বাচন করুন। - খুলুন **Live events → New Live Channel**. একটি শিরোনাম লিখুন. একটি নতুন অ্যাকাউন্টের জন্য, **Create new live content** চয়ন করুন এবং একটি অনন্য Content ID লিখুন৷ বিকল্পভাবে, বিদ্যমান লাইভ সামগ্রী নির্বাচন করুন। - AWS অঞ্চল, ঘূর্ণন ব্যবধান, এবং DVR উইন্ডো নির্বাচন করুন। MediaLive, MediaPackage এবং SPEKE সেতুর জন্য একই AWS অঞ্চল ব্যবহার করুন। শুরুর মান হল ঘূর্ণনের জন্য 600 সেকেন্ড এবং ধরে রাখা DVR মিডিয়ার জন্য 7200 সেকেন্ড। - Channel তৈরি করুন। একবার দেখানো origin secret, integration ID এবং পৃথক DASH ও HLS resource ID নিরাপদে সংরক্ষণ করুন। Secret কখনো player, screenshot, support ticket বা public repository-তে দেবেন না। DRM-X চ্যানেল হল একটি বিষয়বস্তু এবং অনুমোদন কনফিগারেশন। একটি DRM-X Live Run শুরু করা এবং AWS এনকোডার শুরু করা পৃথক অপারেশন। ## আপনার AWS অ্যাকাউন্ট কনফিগার করুন[#](#configure-aws) - Billing চালু থাকা AWS account এবং CloudFormation, MediaLive, MediaPackage v2, API Gateway, IAM service role ও CloudFront পরিচালনার অনুমতি থাকা operator ব্যবহার করুন। পরীক্ষার আগে regional quota ও বর্তমান মূল্য দেখুন। - কনসোল থেকে [DRM-X AWS CloudFormation টেমপ্লেট](https://6.drm-x.com/downloads/drmx-live-aws.yaml) ডাউনলোড করুন। `CreateMediaResources=false`, DRM-X ইন্টিগ্রেশন/রিসোর্স আইডি এবং অরিজিন সিক্রেট দিয়ে স্ট্যাক তৈরি করুন। টেমপ্লেটটি স্কোপড সার্ভিস রোল এবং একটি IAM-অনুমোদিত SPEKE সেতু তৈরি করে। - DRM-X **Configure AWS** এ, আপনার AWS অ্যাকাউন্ট ID এবং স্ট্যাকের সঠিক `SpekeRoleArn` লিখুন। DRM-X Live Run শুরু করুন যাতে প্রমাণীকৃত কী অনুরোধ সফল হতে পারে। - `CreateMediaResources=true` দিয়ে একই স্ট্যাক আপডেট করুন। বিদ্যমান গোপনীয়তা এবং অন্যান্য পরামিতি রাখুন। স্ট্যাক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। - স্ট্যাক আউটপুট `DashOriginUrl`, `HlsOriginUrl`, `DashCloudFrontUrl`, এবং `HlsCloudFrontUrl` ম্যাচিং DRM-X ক্ষেত্রগুলিতে অনুলিপি করুন। দর্শকরা CloudFront URL ব্যবহার করে৷ উৎপত্তি CloudFront এ সীমাবদ্ধ থাকে। - MediaLive-এ **RTMP push** input তৈরি করুন। `/32` input security rule দিয়ে শুধু broadcaster-এর বর্তমান public IP অনুমোদন করুন। ISP আপনার IP বদলালে rule আপডেট করতে হবে। - Stack-এর `MediaLiveRoleArn` ব্যবহার করে MediaLive channel তৈরি করুন, input যুক্ত করুন এবং stack-এর channel group ও channel name দিয়ে **MediaPackage v2 CMAF** output group যোগ করুন। সীমিত পরীক্ষায় একটি pipeline যথেষ্ট; production event-এর জন্য উপযুক্ত redundancy ব্যবস্থা দরকার। Template Widevine ও PlayReady-এর জন্য DASH-CENC এবং FairPlay-এর জন্য HLS-CBCS তৈরি করে। এর `PRESET_AUDIO_1` ও `PRESET_VIDEO_3` contract-এ audio, SD, HD ও UHD-এর জন্য পৃথক key থাকে। `PRESET_VIDEO_2` ব্যবহার করা existing installation-এ আলাদা policy-সহ UHD যোগ করার আগে encryption contract update পর্যালোচনা করতে হবে। [AWS encryption preset](https://docs.aws.amazon.com/mediapackage/latest/userguide/drm-content-speke-v2-presets.html) দেখুন। ## 4K এর জন্য OBS Studio কনফিগার করুন[#](#configure-obs-for-4k) - আপনার OBS প্রোফাইল এবং দৃশ্য সংগ্রহের নকল করুন। তাদের একটি স্বীকৃত লাইভ-ইভেন্ট নাম দিন। - উদ্দেশ্য ভিডিও বা ক্যাপচার উৎস যোগ করুন. নিশ্চিত করুন এটি আসলে 3840×2160, এটিকে ক্যানভাসে ফিট করুন এবং এর অডিও যাচাই করুন৷ একটি রিহার্সাল ফাইলের জন্য, লুপ সক্ষম করুন। অব্যবহৃত উইন্ডো বা ডেস্কটপ ক্যাপচার লুকান। - **Settings → Video**, ক্যানভাস এবং আউটপুট রেজোলিউশন উভয়ই `3840x2160` এ সেট করুন এবং এই উদাহরণের জন্য `30` fps বেছে নিন। - **Output → Advanced → Streaming**-এ NVIDIA NVENC H.264-এর মতো সমর্থিত H.264 hardware encoder বেছে নিন। CBR `18000 Kbps`, `2 s` keyframe interval ও high profile ব্যবহার করুন এবং output rescaling বন্ধ করুন। NVENC-এর জন্য P5 ও High Quality দিয়ে শুরু করা যায়; পরীক্ষার সময় encoding load দেখুন। - AAC অডিও এবং 48 kHz স্টেরিও ব্যবহার করুন। অবাঞ্ছিত মাইক্রোফোন এবং ডেস্কটপ অডিও উত্স অক্ষম করুন। - **Stream**-এ Custom বেছে নিন। MediaLive RTMP input URL থেকে server/application URL এবং শেষে থাকা stream name আলাদা করুন। শেষ অংশটি Stream Key-তে দিন এবং সেটি গোপন রাখুন। সম্মিলিত ভিডিও এবং অডিও বিটরেটের উপরে হেডরুমের সাথে একটি স্থিতিশীল আপলোড সংযোগ ব্যবহার করুন। যদি OBS টেকসই নেটওয়ার্ক বা এনকোডিং ড্রপ রিপোর্ট করে, দর্শকদের জন্য ইভেন্টটি খোলার আগে সেগুলি সংশোধন করুন। [OBS হার্ডওয়্যার এনকোডিং নির্দেশিকা](https://obsproject.com/kb/hardware-encoding) দেখুন। ## অভিযোজিত আউটপুট কনফিগার করুন[#](#configure-4k-adaptive-outputs) উপরের OBS সেটিংসের জন্য, সর্বাধিক 20 Mbps সহ একটি AVC/UHD MediaLive ইনপুট স্পেসিফিকেশন ব্যবহার করুন। 30 fps-এ নিম্নলিখিত H.264 আউটপুটগুলি তৈরি করুন, বন্ধ 2-সেকেন্ডের GOP এবং সারিবদ্ধ 6-সেকেন্ড CMAF অংশগুলি সহ। AAC অডিওকে তার নিজস্ব উপস্থাপনায় রাখুন। | রেজোলিউশন | উদাহরণ ভিডিও বিটরেট | কী গ্রুপ | | --- | --- | --- | | 3840×2160 | 16 Mbps | UHD | | 1920×1080 | 5 Mbps | HD | | 1280×720 | 2.5 Mbps | HD | | 854×480 | 1.2 Mbps | SD | | 640×360 | 0.7 Mbps | SD | এগুলো হল রিহার্সাল সেটিংস, মানের গ্যারান্টি নয়। ছোট ডিসপ্লে, সীমাবদ্ধ নেটওয়ার্ক এবং DRM নিরাপত্তা স্তরের গুণমানকে সীমিত করে এমন ডিভাইসগুলির জন্য একটি 4K চ্যানেলের এখনও কম উপস্থাপনা প্রয়োজন। একটি ভিন্ন এনকোডার নির্বাচন করার সময় বর্তমান [MediaLive কোডেক এবং রেজোলিউশন সমর্থন](https://docs.aws.amazon.com/medialive/latest/ug/eml-limitations-and-rules.html) পরীক্ষা করুন। ## পূর্ববর্তী ইভেন্টের পরে একটি চ্যানেল পুনরায় ব্যবহার করা[#](#reuse-channel-history) Encoder চললেই দর্শকের কাছে নতুন media পৌঁছাচ্ছে বলে ধরে নেওয়া যাবে না। MediaPackage-এর manifest-last-updated header এবং তালিকাভুক্ত resolution দেখুন। Encoder বা rendition পরিবর্তনের পরও পুনর্ব্যবহৃত channel পুরোনো segment সরবরাহ করলে [AWS channel history reset পদ্ধতি](https://docs.aws.amazon.com/mediapackage/latest/userguide/channel-reset.html) অনুসরণ করুন। - পূর্ববর্তী DVR বিষয়বস্তু স্থায়ীভাবে সরানো যেতে পারে নিশ্চিত করুন; একটি রিসেট একটি রোলব্যাক অপারেশন নয়. - OBS এবং MediaLive channel বন্ধ করুন। MediaLive-এ Idle status আসা পর্যন্ত অপেক্ষা করুন। - MediaPackage-এ, নির্দিষ্ট পরীক্ষার চ্যানেলের জন্য ইতিহাস পুনরায় সেট করুন। রিসেট সম্পূর্ণ হওয়ার পরে কমপক্ষে 30 সেকেন্ড অপেক্ষা করুন। - MediaLive চালু করে Running status আসা পর্যন্ত অপেক্ষা করুন, তারপর OBS চালু করুন। নতুন DASH/HLS media, SPEKE exchange এবং device playback আবার পরীক্ষা করুন। ## ইভেন্টটি PHP, Android এবং iOS এ যোগ করুন[#](#test-web-android-ios) সমস্ত উদাহরণ জুড়ে একই লাইভ Content ID এবং পরিবেশ ব্যবহার করুন। আপনার PHP সার্ভারে Site Key এবং Access Key রাখুন। হোস্ট করা নমুনা ইভেন্টটি হল `aws-live-test-20260902`, শিরোনাম **4K Live DRM Test**; রিহার্সাল চলাকালীনই এটি পাওয়া যায়। PHP-এ, `id`, `title` এবং `type: live` সহ একটি বিশ্বস্ত প্লেলিস্ট এন্ট্রি যোগ করুন। নমুনার সেশন এনটাইটেলমেন্ট রিফ্রেশ করতে আবার সাইন ইন করুন। ব্যাকএন্ড নিবন্ধিত লাইভ ম্যানিফেস্টের সমাধান করে এবং একটি ক্লায়েন্ট সরবরাহকৃত প্রকারকে প্রত্যাখ্যান করে যা ক্যাটালগের সাথে মেলে না। ``` 'playlist' => [ ['id' => 'your-live-content-id', 'title' => 'My live event', 'type' => 'live'], ], ``` Android-এ `DrmXPlaylistItem("your-live-content-id", "My live event", "live")` যোগ করুন এবং playback প্রস্তুত করার সময় এর content type দিন। Apple নমুনায় `DrmXPlaylistItem(contentId: "your-live-content-id", title: "My live event", contentType: .live)` ব্যবহার করুন। Live entry শুধু streaming-এর জন্য; offline download queue-তে যোগ করবেন না। ## শুরু করুন, যাচাই করুন এবং বন্ধ করুন[#](#start-and-stop-the-broadcast) - DRM-X Live Run চালু করুন, তারপর AWS MediaLive channel চালু করুন। MediaLive-এ Running status আসা পর্যন্ত অপেক্ষা করুন। - OBS এ স্ট্রিমিং শুরু করুন। এর বিটরেট, ড্রপ করা ফ্রেম, অডিও এবং এনকোডার লোড পরীক্ষা করুন। - DASH/HLS manifest নিয়মিত আপডেট হচ্ছে এবং প্রত্যাশিত representation ও DRM signaling আছে কি না দেখুন। ব্রাউজার, Android Widevine এবং iPhone FairPlay-এ decoded ভিডিও ও audio পরীক্ষা করুন। অন্তত একটি key rotation-এর সময় player চালু রাখুন, তারপর নতুন দর্শক হিসেবে সংযোগ পরীক্ষা করুন। - পরীক্ষা শেষে OBS streaming, MediaLive channel এবং DRM-X Live Run বন্ধ করুন। MediaLive আবার Idle হয়েছে কি না দেখুন। একা OBS থামানো AWS এনকোডার চার্জ বন্ধ করে না। রক্ষিত ইনপুট, প্যাকেজিং/স্টোরেজ, অনুরোধ এবং ডেলিভারি চার্জ আলাদাভাবে চেক করুন। [MediaLive মূল্য](https://aws.amazon.com/medialive/pricing/) এবং আপনার AWS বিলিং কনসোল দেখুন৷ ## যাচাইকৃত রিহার্সাল: 17 সেপ্টেম্বর 2026[#](#verified-rehearsal) Channel encrypted 3840×2160 ভিডিও ও কম resolution-এর adaptive rendition সরবরাহ করেছে। প্রকৃত iPhone-এ 4K decode হয়েছে এবং 600-second key rotation-এর সীমানা অতিক্রম করে ছয় মিনিটের playback সফল হয়েছে। Samsung Android ডিভাইস-তে device-এর জানানো display limit 1080p-এ দশ মিনিটের live playback সফল হয়েছে। Rotation-এর পর উভয় device-এ নতুন সংযোগও সফল হয়। ফলাফল শুধু পরীক্ষিত device, codec ও policy-র জন্য প্রযোজ্য। Cache-এ না রাখা live manifest-এর জন্য Android SDK **1.0.0-preview.13** বা নতুন version ব্যবহার করুন। Download করা video ধরে রাখতে existing [Android evaluation app](https://docs.drm-x.com/downloads/android/1.0.0-preview.13/drmx-android-player-1.0.0-preview.13.apk) সরাসরি upgrade করুন। Updated Apple sample key ID ও IV অক্ষুণ্ণ রেখে MediaPackage metadata ছোট করে, যাতে FairPlay-এর 200-byte SPC identifier limit-এর মধ্যে থাকে। এর resolution preference width ও height দুটোই দেয়, ফলে adaptive playback 4K পর্যন্ত পৌঁছাতে পারে। ### Safari লাইভ প্লেব্যাক Safari-এর জন্য Web SDK 1.2.0-preview.13 বা নতুন version ব্যবহার করুন। macOS, iOS ও iPadOS-এ native Apple Media Keys থাকলে এটি সেটি বেছে নেয় এবং live/VOD playlist বদলালেও একই API রাখে। Live playback MSE/SINF-এ fallback করে না, কারণ MediaPackage key rotation-এর পর সেই path পুরোনো initialization-segment key চাইতে পারে। HLS signaling-এ বর্তমান key ID ও IV হুবহু রাখুন। DRM-X SPEKE সংক্ষিপ্ত KeyId/IV asset identifier দেয়, যাতে Safari identifier-size limit-এর মধ্যে FairPlay license চাইতে পারে। DRM License Token নির্দিষ্ট content ও key-এর অনুমতি নিয়ন্ত্রণ করে। Key Service আপডেটের পর নির্ভরশীল SPEKE gateway চলছে কি না দেখুন। Key delivery বন্ধ থাকলে encoder ভিডিও পেলেও নতুন protected output প্রকাশ করতে পারে না। আলাদা 15 মিনিটের Safari পরীক্ষায় Mac ও iPhone-এ key rotation-এর মধ্যেও প্লেব্যাক চলতে দেখা গেছে। iPhone-এ native Apple Media Keys ব্যবহার করা হয়। Mac-এ rotation পরীক্ষায় modern EME ব্যবহার করা হয়; modern EME চালুর সময় অনিয়মিত error-এর পর native Apple Media Keys দিয়ে নতুন করে সংযোগ সফল হয়। ব্রাউজারের adaptive playback Mac-এ 720p এবং iPhone-এ 480p পর্যন্ত পৌঁছায়। এটি ব্রাউজারে 4K প্লেব্যাক বা Mac-এর চূড়ান্ত compatibility path-এ rotation যাচাই করে না। উপরের native app-এর 4K ফলাফল আলাদা পরীক্ষার। ### রিহার্সাল পুনরায় আরম্ভ করার আগে - যাচাই করুন যে SPEKE এন্ডপয়েন্ট পৌঁছানো যায় এবং কনসোল একটি সাম্প্রতিক বিনিময় দেখায়। কী ডেলিভারি ব্যর্থ হলে ইনপুট গ্রহণকারী একটি এনকোডার এখনও বাসি মিডিয়া পরিবেশন করতে পারে। - VOD/অফলাইন মিডিয়া ক্যাশে লাইভ ম্যানিফেস্ট উৎস থেকে আলাদা রাখুন। - প্রকৃত ডিকোড করা মাত্রা পরীক্ষা করুন; একা একটি 4K চ্যানেল নির্বাচন করা 4K প্লেব্যাক প্রমাণ করে না। - এই মহড়া বন্ধ করা হয়. আবার লাইভ ক্যাটালগ এন্ট্রি পরীক্ষা করার আগে একটি নতুন অনুমোদিত DRM-X Live Run, AWS এনকোডার এবং OBS স্ট্রিম শুরু করুন।