DRM (ڈیجیٹل رائٹس مینجمنٹ) ڈیجیٹل مواد کو غیر مجاز کاپی اور تقسیم سے بچانے والی ٹیکنالوجیز کا ایک مجموعہ ہے۔ موبائل ایپلیکیشنز میں، DRM ویڈیو، آڈیو اور ای بکس کو انکرپٹ کرنے کے لیے استعمال ہوتا ہے، جو حقوق کے حاملین اور صارفین کے درمیان لائسنسنگ معاہدوں کی تعمیل کو یقینی بناتا ہے۔ Google Widevine Documentation، 2026 کے مطابق، DRM زیادہ تر سٹریمنگ سروسز — Netflix، Spotify، Apple TV+ — میں شامل ہے اور پریمیم مواد کی قانونی تقسیم کے لیے لازمی ہے۔
اہم نکات
DRM خفیہ نگاری اور سافٹ ویئر کے طریقوں کا ایک مجموعہ ہے جو ڈیجیٹل مواد تک رسائی کو کنٹرول کرتا ہے۔ سادہ انکرپشن کے برعکس، DRM میں لائسنسنگ کا نظام شامل ہے: مواد انکرپٹڈ ہے اور اسے دیکھنے کے لیے ایک کلید درکار ہے جو صارف کے حقوق کی تصدیق کے بعد جاری کی جاتی ہے۔
DRM کا بنیادی مقصد قزاقی کو روکنا اور علاقائی پابندیوں کی تعمیل کو یقینی بنانا ہے۔ DRM کے بغیر، مواد کے مالکان (فلم سٹوڈیوز، ریکارڈ لیبل) سٹریمنگ پلیٹ فارمز کے لیے اپنا مواد لائسنس نہیں دیتے۔ Motion Picture Association (2025) کے مطابق، DRM نے DVD-rip دور کے مقابلے میں سٹریمنگ میں فلموں کی غیر قانونی تقسیم میں 62% کمی کی۔
موبائل ڈیویلپمنٹ میں، DRM میڈیا پلیئر کی سطح پر شامل کیا جاتا ہے: ڈیولپر ExoPlayer (Android)، AVPlayer (iOS) یا Shaka Player (Web) استعمال کرتا ہے، جو انکرپٹڈ سٹریم کی بلٹ ان ڈیکرپشن کو سپورٹ کرتے ہیں۔ ڈیولپر کو خفیہ نگاری لاگو کرنے کی ضرورت نہیں — صرف لائسنسنگ کے لیے SDK ضم کرنا ہوگا۔
CENC معیار (مشترکہ انکرپشن — ISO/IEC 23001-7) تمام DRM سسٹمز کے لیے ایک انکرپٹڈ میڈیا فائل استعمال کرنے کی اجازت دیتا ہے۔ مواد ایک بار انکرپٹ کیا جاتا ہے اور کلیدیں مختلف لائسنس سرورز کے ذریعے تقسیم کی جاتی ہیں۔ یہ ملٹی پلیٹ فارم سروسز کے لیے اہم ہے: Netflix ایک فلم کو ایک بار انکرپٹ کرتا ہے اور بغیر دوبارہ کوڈنگ کے Android (Widevine)، iOS (FairPlay) اور Windows (PlayReady) پر پہنچاتا ہے۔
CENC آڈیو اور ویڈیو ٹریکس کے لیے مختلف کلیدوں کے ساتھ CBC انکرپشن استعمال کرتا ہے۔ ہر کلید MPD (MPEG-DASH) یا M3U8 (HLS) مینی فیسٹ میں انکرپٹڈ شکل میں محفوظ کی جاتی ہے۔ مواد کا شناخت کنندہ (KID) انکرپٹڈ سٹریم کو سرور پر لائسنس سے جوڑتا ہے — درست لائسنس کے بغیر کلید ڈیکرپٹ نہیں کی جا سکتی۔
DRM پلے بیک کا عمل چار مراحل پر مشتمل ہے: مینی فیسٹ لوڈ کرنا، لائسنس حاصل کرنا، مواد ڈیکرپٹ کرنا اور ڈسپلے کرنا۔ ہر مرحلہ سسٹم کے مختلف اجزاء — میڈیا پلیئر، CDM ماڈیول اور لائسنس سرور کے ذریعے انجام دیا جاتا ہے۔
CDM ایک محفوظ سافٹ ویئر یا ہارڈویئر ماڈیول ہے جو مواد کی ڈیکرپشن انجام دیتا ہے۔ Android پر، CDM MediaDrm API کی سطح پر لاگو کیا گیا ہے؛ iOS پر، یہ AVContentKeySession کے ذریعے AVFoundation میں شامل ہے۔ CDM کبھی بھی کلید کو ایپلیکیشن پر ظاہر نہیں کرتا — تمام خفیہ نگاری کے عمل ایک محفوظ ماحول (TEE — ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ) کے اندر انجام پاتے ہیں۔
ہارڈویئر سپورٹ (سیکیورٹی لیول 1) والے آلات پر، CDM TEE کے اندر کام کرتا ہے — کلید کبھی ڈیوائس کی مرکزی میموری میں داخل نہیں ہوتی۔ 4K HDR مواد چلانے کے لیے سٹوڈیوز کی یہ ایک شرط ہے۔ TEE کے بغیر آلات پر، کلیدیں سافٹ ویئر میں ڈیکرپٹ کی جاتی ہیں (L3)، جو تحفظ کو کم کرتا ہے اور زیادہ سے زیادہ معیار کو 540p تک محدود کرتا ہے۔
تین DRM سسٹم موبائل پلیٹ فارمز پر حاوی ہیں۔ ہر ایک اپنے ماحولیاتی نظام کے لیے مخصوص ہے، لیکن سب CENC کو سپورٹ کرتے ہیں، جو تمام پلیٹ فارمز پر ایک انکرپٹڈ مواد کے سٹریم کے استعمال کی اجازت دیتا ہے۔
| DRM | ڈیویلپر | پلیٹ فارم | زیادہ سے زیادہ معیار | ہارڈویئر تحفظ |
|---|---|---|---|---|
| Widevine | Android، Chrome، Android TV | 4K HDR (L1) | TEE (L1) | |
| FairPlay | Apple | iOS، iPadOS، macOS، tvOS | 4K HDR (iOS) | Secure Enclave |
| PlayReady | Microsoft | Windows، Xbox، Windows Phone | 4K (SL3000) | TPM + TEE |
تمام پلیٹ فارمز پر چلنے والی سٹریمنگ سروس کے لیے، تینوں DRM سسٹمز کی حمایت درکار ہے۔ ایک عملی حل ملٹی DRM سپورٹ (Muvi، Vualto، Axinom) والا CDN استعمال کرنا ہے، جو صارف کے ڈیوائس کی بنیاد پر لائسنس کی درخواستوں کو خود بخود مناسب سرور پر روٹ کرتا ہے۔ Streaming Learning Center (2025) کے مطابق، 78% سٹریمنگ سروسز ملٹی DRM طریقہ کار استعمال کرتی ہیں۔
CENC کے ساتھ MPEG-DASH معیار فن تعمیر کو آسان بناتا ہے: مواد ایک مشترکہ کلید کے ساتھ ایک بار انکرپٹ کیا جاتا ہے اور DRM سسٹم کلائنٹ کی طرف منتخب کیا جاتا ہے۔ لائسنس سرور ڈیوائس شناخت کنندہ کے ساتھ درخواست وصول کرتا ہے اور مخصوص CDM کے لیے انکرپٹڈ کلید واپس کرتا ہے۔ مختلف پلیٹ فارمز کے لیے مواد میں کوئی فرق نہیں — صرف ایک مختلف لائسنس سرور۔
Widevine Google کا DRM سسٹم ہے، جو Android پر ڈی فیکٹو معیار ہے۔ یہ تین حفاظتی سطحوں کو سپورٹ کرتا ہے جو یہ طے کرتی ہیں کہ مواد کی ڈیکرپشن کہاں اور کیسے انجام پاتی ہے۔ حفاظتی سطح ڈیوائس کی ہارڈویئر صلاحیتوں پر منحصر ہے اور مواد کی زیادہ سے زیادہ ریزولوشن کا تعین کرتی ہے۔
Widevine L1 (ہارڈویئر) — سب سے محفوظ سطح۔ تمام خفیہ نگاری کے عمل ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ (TEE) کے اندر انجام پاتے ہیں۔ کلید کبھی محفوظ علاقہ نہیں چھوڑتی۔ L1 آلات 4K HDR تک مواد چلا سکتے ہیں۔ Google سرٹیفیکیشن درکار ہے — ایک عمل جو فلیگ شپ آلات سے گزرتے ہیں۔
Widevine L3 (سافٹ ویئر) — ڈیکرپشن ڈیوائس کی مرکزی میموری میں انجام پاتی ہے۔ ایک تکنیکی طور پر ماہر حملہ آور کلید نکال سکتا ہے۔ پریمیم مواد کے لیے ریزولوشن 540p (960x540) تک محدود ہے۔ تمام Android آلات L3 کو سپورٹ کرتے ہیں، چاہے وہ L1 کے لیے تصدیق شدہ نہ بھی ہوں۔
Widevine L2 — ایک نایاب درمیانی سطح جہاں ڈیکرپشن TEE میں انجام پاتی ہے لیکن رینڈرنگ غیر محفوظ راستے سے ہوتی ہے۔ کچھ سمارٹ TV پر استعمال ہوتی ہے۔ موبائل آلات پر عملی طور پر نہیں پائی جاتی۔
import android.media.MediaDrm
import android.media.UUID
fun checkWidevineLevel(): String {
val widevineUuid = UUID.fromString("edef8ba9-79d6-4ace-a3c8-27dcd51d21ed")
val mediaDrm = MediaDrm(widevineUuid)
val securityLevel = mediaDrm.getPropertyString(
MediaDrm.PROPERTY_SECURITY_LEVEL
)
return when (securityLevel) {
"L1" -> "Widevine L1 — ہارڈویئر تحفظ"
"L3" -> "Widevine L3 — سافٹ ویئر تحفظ"
else -> "Widevine $securityLevel"
}
}
یہ طریقہ Widevine UUID کے ذریعے CDM سے securityLevel پراپرٹی پوچھتا ہے۔ واپسی کی قدر L1، L2 یا L3 کا سٹرنگ ہے، جو ڈیوائس کی موجودہ حفاظتی سطح کو ظاہر کرتی ہے۔ یہ معلومات سٹریمنگ سروسز کے لیے اہم ہے: اگر کسی ڈیوائس میں صرف L3 ہے تو 4K مواد ڈسپلے نہیں کیا جا سکتا۔
FairPlay Apple کا DRM سسٹم ہے، جو تمام ماحولیاتی نظام پلیٹ فارمز: iOS، iPadOS، macOS، tvOS اور watchOS میں شامل ہے۔ Widevine کے برعکس، FairPlay میں حفاظتی سطحیں نہیں ہیں — تحفظ ڈیوائس کے ذریعے طے ہوتا ہے۔ Secure Enclave والے iOS پر، FairPlay Widevine L1 کے برابر تحفظ فراہم کرتا ہے۔
FairPlay صرف HLS (HTTP Live Streaming) پروٹوکول کے ساتھ کام کرتا ہے۔ مواد .ts سیگمنٹس (MPEG-TS) یا .m4s ٹکڑوں (fMP4) میں پیک کیا جاتا ہے۔ M3U8 مینی فیسٹ میں لائسنس سرور URI (KSM — کی سرور ماڈیول) اور ابتدائی IV کے ساتھ #EXT-X-KEY ٹیگ ہوتا ہے۔ پلے بیک شروع ہونے پر، AVPlayer مینی فیسٹ پڑھتا ہے اور AVContentKeySession کے ذریعے کلید کی درخواست کرتا ہے۔
import AVFoundation
let contentKeySession = AVContentKeySession(keySystem: fairPlayStreaming)
let player = AVPlayer(playerItem: playerItem)
contentKeySession.setDelegate(self, queue: delegateQueue)
func contentKeySession(
_ session: AVContentKeySession,
didProvide keyRequest: AVContentKeyRequest
) {
let assetId = keyRequest.identifier as! String
sendLicenseRequest(assetId) { licenseData in
keyRequest.processContentKeyResponse(
AVContentKeyResponse(fairPlayStreamingKeyResponseData: licenseData)
)
}
}
AVContentKeySession کا مندوب مواد کے شناخت کنندہ (assetId) کے ساتھ کلید کی درخواست وصول کرتا ہے۔ ایپلیکیشن یہ ID اپنے لائسنس سرور (KSM) کو بھیجتی ہے، جو انکرپٹڈ کلید واپس کرتا ہے۔ processContentKeyResponse کال کلید کو ڈیکرپشن کے لیے CDM کو بھیجتی ہے۔ اگر لائسنس درست نہیں ہے (میعاد ختم، بلا معاوضہ)، سرور 403 غلطی واپس کرتا ہے اور AVPlayer پلے بیک شروع نہیں کرتا۔
FairPlay مستقل کلیدوں کو سپورٹ کرتا ہے — آف لائن دیکھنے کے لیے ڈیوائس پر لائسنس محفوظ کرنا۔ کلید حاصل کرنے کے بعد، ایپلیکیشن allowsPersistableKey پرچم کے ساتھ processContentKeyResponse کو کال کرتی ہے۔ کلید Keychain میں محفوظ ہوتی ہے اور بعد کے پلے بیک پر سرور سے رابطہ کیے بغیر استعمال کی جا سکتی ہے۔ تاہم، آف لائن لائسنس کی محدود میعاد ہوتی ہے — عام طور پر 7-30 دن، جس کے بعد تجدید درکار ہے۔
آف لائن لائسنس iOS کے محفوظ اسٹوریج — Keychain میں محفوظ کیے جاتے ہیں۔ جیل بریک یا ڈمپ نکالنے کی کوشش پر، Secure Enclave کلیدوں کو تباہ کر دیتا ہے۔ Apple (2025) کے مطابق، مستقل کلید ٹیکنالوجی Apple TV+، Netflix اور Disney+ میں سفر سے پہلے iPad پر مواد ڈاؤن لوڈ کرنے کے لیے استعمال ہوتی ہے۔
PlayReady Microsoft کا DRM ہے، جو Windows، Xbox اور لیگیسی Windows Phone پر استعمال ہوتا ہے۔ اگرچہ PlayReady موبائل آلات پر Widevine اور FairPlay کے مقابلے میں کم عام ہے، یہ تمام Microsoft پلیٹ فارمز پر کام کرنے والے عالمی سٹریمنگ حل کے لیے اہم ہے۔ PlayReady TPM کے ذریعے سافٹ ویئر اور ہارڈویئر دونوں تحفظ کو سپورٹ کرتا ہے۔
PlayReady SL (سیکیورٹی لیول) فن تعمیر استعمال کرتا ہے: SL2000 (سافٹ ویئر، Widevine L3 جیسا)، SL3000 (ہارڈویئر، L1 جیسا)۔ Xbox Series X پر، PlayReady SL3000 TEE+TPM کے ذریعے کام کرتا ہے — کلیدیں صرف محفوظ ماحول میں نکالی جاتی ہیں۔ یہ کاپی کے خطرے کے بغیر کنسول پر 4K Blu-ray چلانے کی اجازت دیتا ہے۔
Microsoft Docs (2026) کے مطابق، PlayReady CENC کو سپورٹ کرتا ہے اور Edge براؤزرز میں Media Source Extensions (MSE) کے ذریعے MPEG-DASH کے ساتھ کام کر سکتا ہے۔ Android اور iOS پر موبائل ایپلیکیشنز کے لیے، PlayReady SDK کے ذریعے دستیاب ہے لیکن شاذ و نادر ہی استعمال ہوتا ہے — بنیادی طور پر انٹرپرائز ایپلیکیشنز اور Microsoft میڈیا سروسز کے لیے۔
Microsoft Android اور iOS کے لیے PlayReady نیٹو SDK فراہم کرتا ہے۔ انضمام PlayReady ایکسٹینشن کے ساتھ ExoPlayer کے ذریعے کیا جاتا ہے: ڈیولپر PlayReadyRenderer شامل کرتا ہے، جو ڈی کوڈنگ چین میں شامل ہوتا ہے۔ ExoPlayer MPD مینی فیسٹ میں متعین DRM کی بنیاد پر خود بخود Widevine اور PlayReady کے درمیان سوئچ کرتا ہے۔
اگرچہ PlayReady موبائل ایپلیکیشنز میں شاذ و نادر ہی استعمال ہوتا ہے، Microsoft ماحولیاتی نظام میں سروسز کے لیے اس کی حمایت لازمی ہے — مثال کے طور پر، SharePoint اور Stream پر انٹرپرائز ٹریننگ پلیٹ فارم۔ Microsoft (2025) کے مطابق، PlayReady 23% انٹرپرائز میڈیا حل میں استعمال ہوتا ہے جبکہ Widevine 62% میں۔
موبائل ایپلیکیشن میں DRM ضم کرنے کے لیے خفیہ نگاری کا کوڈ لکھنے کی ضرورت نہیں — ڈیولپر ایک پلیئر کے ساتھ کام کرتا ہے جو DRM کو مقامی طور پر سپورٹ کرتا ہے۔ آئیے DRM ایکسٹینشن کے ساتھ ExoPlayer کے ذریعے Android پر انضمام دیکھتے ہیں۔
val drmSessionManager = DefaultDrmSessionManager.Builder()
.setUuidAndExoMediaDrmProvider(
C.WIDEVINE_UUID,
FrameworkMediaDrm.DEFAULT_PROVIDER
)
.setMultiSession(true)
.build(mediaDrmCallback)
val mediaItem = MediaItem.Builder()
.setUri(mpdUrl)
.setDrmConfiguration(
MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID)
.setLicenseUri(licenseUrl)
.setLicenseRequestHeaders(headers)
.build()
)
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
DefaultDrmSessionManager DRM سیشن کا انتظام کرتا ہے: MediaDrm سیشن بناتا ہے، لائسنس کی درخواستوں کو ہینڈل کرتا ہے اور ڈی کوڈر کو کلیدیں بھیجتا ہے۔ setMultiSession(true) پیرامیٹر مختلف سیشنز میں ایک ساتھ متعدد سٹریمز (آڈیو + ویڈیو) کو ڈیکرپٹ کرنے کی اجازت دیتا ہے۔ MediaDrmCallback لائسنس سرور کو HTTP درخواست لاگو کرتا ہے — عام طور پر SignedRequest باڈی کے ساتھ POST۔
val mediaDrmCallback = DefaultDrmSessionManager.MediaDrmCallback {
url, requestBody ->
val response = OkHttpClient().newCall(
Request.Builder()
.url(url)
.post(RequestBody.create(requestBody, MediaType.parse("application/octet-stream")))
.addHeader("Authorization", "Bearer " )
.build()
).execute()
val responseBytes = response.body?.bytes()
?: throw DrmSessionException(Exception("Empty license response"))
responseBytes
}
کال بیک باڈی میں Widevine UUID کے ساتھ لائسنس سرور کو POST درخواست بھیجتا ہے۔ سرور صارف کی تصدیق (ہیڈر میں ٹوکن) کی تصدیق کرتا ہے اور انکرپٹڈ کلید واپس کرتا ہے۔ اگر صارف کے پاس فعال سبسکرپشن نہیں ہے، سرور 403 Forbidden واپس کرتا ہے — ExoPlayer DRM غلطی پیدا کرتا ہے، جسے onPlayerError کے ذریعے ہینڈل کرنا ضروری ہے۔
DRM غلطیاں اس وقت ہوتی ہیں جب لائسنس درست نہیں ہوتا، میعاد ختم ہو جاتی ہے، یا ڈیوائس مطلوبہ تحفظ کی سطح کو سپورٹ نہیں کرتی۔ ExoPlayer Player.Listener.onPlayerError کے ذریعے TYPE_DRM_LICENSE_EXPIRED، TYPE_DRM_UNSUPPORTED یا TYPE_SOURCE کوڈ کے ساتھ غلطی بھیجتا ہے۔ صارف کو ایک معلوماتی پیغام دکھانے کی سفارش کی جاتی ہے: “یہ ڈیوائس مواد کے لیے دستیاب نہیں ہے” یا “دیکھنے کے لیے اپنی سبسکرپشن کی تجدید کریں۔”
سٹریمنگ سروس کے تجزیوں (2025) کے مطابق، 8% تک ناکام پلے بیک شروع DRM غلطیوں سے متعلق ہیں۔ ان میں سے 60% میعاد ختم شدہ لائسنس، 25% ڈیوائس کی عدم مطابقت اور 15% کلید کی درخواست کے دوران نیٹ ورک کی غلطیاں ہیں۔ 5 سیکنڈ کے بعد خودکار دوبارہ کوشش 40% نیٹ ورک غلطی کے معاملات حل کرتی ہے۔
اکثر پوچھے جانے والے سوالات
Widevine L3 (سافٹ ویئر تحفظ) والے آلات پر تکنیکی طور پر ممکن ہے، جہاں کلید میموری سے نکالی جا سکتی ہے۔ L1 اور Secure Enclave والے FairPlay پر نظرانداز کرنا انتہائی مشکل ہے — TEE تک جسمانی رسائی درکار ہے۔ مواد کے سٹوڈیوز پریمیم مواد کے لیے L1 آلات کو نشانہ بناتے ہیں۔
بہت ممکن ہے کہ ڈیوائس Widevine L1 کے لیے تصدیق شدہ نہیں ہے اور L3 استعمال کر رہی ہے۔ Netflix L3 آلات پر معیار کو 540p تک محدود کرتا ہے۔ Google Play سے DRM Info ایپ کے ذریعے Widevine کی سطح چیک کریں۔ Samsung، Pixel اور OnePlus کے فلیگ شپ آلات میں عام طور پر L1 ہوتا ہے۔
ملٹی DRM استعمال کریں: Android کے لیے Widevine، Apple کے لیے FairPlay، Windows کے لیے PlayReady۔ Axinom یا Vualto جیسی سروسز تینوں DRM سسٹمز کے لیے یکساں API فراہم کرتی ہیں۔ مواد CENC کے ذریعے ایک بار انکرپٹ ہوتا ہے اور DRM کا انتخاب کلائنٹ کی طرف خود بخود ہوتا ہے۔
iOS پر، AVContentKeySession کے ذریعے FairPlay مستقل کلیدوں کا استعمال کریں۔ Android پر، ExoPlayer OfflineLicenseHelper کے ذریعے Widevine آف لائن لائسنس استعمال کریں۔ کلید محدود میعاد کے ساتھ مقامی طور پر Keychain (iOS) یا KeyStore (Android) میں محفوظ ہوتی ہے — عام طور پر 7 سے 30 دن۔
KID (کلید ID) — CENC مینی فیسٹ میں انکرپشن کلید کا ایک منفرد 16 بائٹ شناخت کنندہ۔ ہر KID مواد کے ایک مخصوص حصے (مثال کے طور پر، فلم کا 10 منٹ کا سیگمنٹ) سے منسلک ہوتا ہے۔ لائسنس سرور اپنے ڈیٹا بیس میں متعلقہ کلید تلاش کرنے کے لیے KID کا استعمال کرتا ہے۔ ایک فلم میں مختلف حصوں کے لیے 20 مختلف KIDs ہو سکتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔