DRM ในแอปมือถือ: พื้นฐาน รูปแบบการป้องกัน และหลักการทำงาน

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-05-24 เวลาอ่าน: 11 นาที

DRM (Digital Rights Management) คือชุดเทคโนโลยีสำหรับปกป้องเนื้อหาดิจิทัลจากการคัดลอกและเผยแพร่โดยไม่ได้รับอนุญาต ในแอปพลิเคชันมือถือ DRM ใช้สำหรับเข้ารหัสวิดีโอ เสียง และหนังสืออิเล็กทรอนิกส์ เพื่อให้มั่นใจว่ามีการปฏิบัติตามข้อตกลงสิทธิ์การใช้งานระหว่างเจ้าของสิทธิ์และผู้บริโภค ตาม Google Widevine Documentation, 2026, DRM ถูกฝังอยู่ในบริการสตรีมมิงส่วนใหญ่ — Netflix, Spotify, Apple TV+ — และจำเป็นสำหรับการเผยแพร่เนื้อหาพรีเมียมอย่างถูกกฎหมาย

ประเด็นสำคัญ

  • DRM (Digital Rights Management) — เทคโนโลยีที่ปกป้องลิขสิทธิ์โดยการจำกัดการคัดลอกและเผยแพร่เนื้อหาดิจิทัล
  • สามรูปแบบหลัก: Widevine (Google), FairPlay (Apple), PlayReady (Microsoft) — ครองแพลตฟอร์มมือถือ
  • Widevine ทำงานบน Android และ iOS ผ่าน CDM รองรับสามระดับความปลอดภัย: L1, L2, L3
  • FairPlay ของ Apple ใช้เซิร์ฟเวอร์ KSM สำหรับสร้างคีย์และฝังอยู่ใน AVFoundation บน iOS และ macOS
  • การถอดรหัส DRM เกิดขึ้นที่ระดับ โปรแกรมเล่นสื่อ — นักพัฒนาได้รับสตรีมวิดีโอที่พร้อมผ่าน ExoPlayer หรือ AVPlayer

DRM คืออะไร?

DRM คือชุดของวิธีการเข้ารหัสและซอฟต์แวร์ที่ควบคุมการเข้าถึงเนื้อหาดิจิทัล ต่างจากการเข้ารหัสแบบธรรมดา DRM รวมถึงระบบสิทธิ์การใช้งาน: เนื้อหาถูกเข้ารหัส และการดูต้องใช้คีย์ที่จะออกให้หลังจากตรวจสอบสิทธิ์ของผู้ใช้แล้วเท่านั้น

วัตถุประสงค์หลักของ DRM คือการป้องกันการละเมิดลิขสิทธิ์และให้แน่ใจว่ามีการปฏิบัติตามข้อจำกัดในภูมิภาค หากไม่มี DRM เจ้าของเนื้อหา (สตูดิโอภาพยนตร์ ค่ายเพลง) จะไม่ให้สิทธิ์การใช้งานเนื้อหาของตนแก่แพลตฟอร์มสตรีมมิง ตาม Motion Picture Association (2025) การใช้ DRM ลดการเผยแพร่ภาพยนตร์ที่ผิดกฎหมายบนสตรีมมิงลง 62% เมื่อเทียบกับยุค DVD-rip

ในการพัฒนามือถือ DRM ถูกฝังที่ระดับโปรแกรมเล่นสื่อ: นักพัฒนาใช้ ExoPlayer (Android), AVPlayer (iOS) หรือ Shaka Player (Web) ซึ่งรองรับการถอดรหัสในตัวของสตรีมที่เข้ารหัส นักพัฒนาไม่จำเป็นต้อง implement การเข้ารหัส — เพียงรวม SDK สำหรับการให้สิทธิ์ใช้งาน

DRM และ CENC (Common Encryption)

มาตรฐาน CENC (Common Encryption — ISO/IEC 23001-7) อนุญาตให้ใช้ไฟล์สื่อที่เข้ารหัสไฟล์เดียวสำหรับระบบ DRM ทั้งหมด เนื้อหาจะถูกเข้ารหัสครั้งเดียวและคีย์จะถูกกระจายผ่านเซิร์ฟเวอร์สิทธิ์การใช้งานที่แตกต่างกัน นี่เป็นสิ่งสำคัญสำหรับบริการหลายแพลตฟอร์ม: Netflix เข้ารหัสภาพยนตร์ครั้งเดียวและส่งไปยัง Android (Widevine), iOS (FairPlay) และ Windows (PlayReady) โดยไม่ต้องเข้ารหัสซ้ำ

CENC ใช้การเข้ารหัส CBC ด้วยคีย์ที่แตกต่างกันสำหรับแทร็กเสียงและวิดีโอ แต่ละคีย์จะถูกจัดเก็บในรูปแบบเข้ารหัสในไฟล์ประกาศ MPD (MPEG-DASH) หรือ M3U8 (HLS) ตัวระบุเนื้อหา (KID) เชื่อมโยงสตรีมที่เข้ารหัสกับสิทธิ์การใช้งานบนเซิร์ฟเวอร์ — หากไม่มีสิทธิ์การใช้งานที่ถูกต้อง คีย์จะไม่สามารถถอดรหัสได้

DRM ทำงานอย่างไรในแอปพลิเคชันมือถือ

กระบวนการเล่น DRM ประกอบด้วยสี่ขั้นตอน: การโหลดไฟล์ประกาศ การได้รับสิทธิ์การใช้งาน การถอดรหัสเนื้อหา และการแสดงผล แต่ละขั้นตอนดำเนินการโดยส่วนประกอบต่าง ๆ ของระบบ — โปรแกรมเล่นสื่อ, โมดูล CDM และเซิร์ฟเวอร์สิทธิ์การใช้งาน

  • การโหลดไฟล์ประกาศ — โปรแกรมเล่นได้รับ MPD (DASH) หรือ M3U8 (HLS) พร้อมข้อมูลเมตาเกี่ยวกับเซ็กเมนต์ที่เข้ารหัส รูปแบบการเข้ารหัส และ URL ของเซิร์ฟเวอร์สิทธิ์การใช้งาน
  • การขอสิทธิ์การใช้งาน — โปรแกรมเล่นส่งตัวระบุเนื้อหา (KID) ไปยังโมดูลถอดรหัสเนื้อหา (CDM) ซึ่งสร้างคำขอไปยังเซิร์ฟเวอร์สิทธิ์การใช้งาน
  • การรับคีย์ — เซิร์ฟเวอร์ตรวจสอบสิทธิ์ของผู้ใช้ (การสมัครสมาชิก ภูมิภาค อุปกรณ์) และส่งคืนคีย์ที่เข้ารหัสด้วยคีย์สาธารณะของอุปกรณ์
  • การถอดรหัสสตรีม — CDM ถอดรหัสคีย์โดยใช้คีย์ส่วนตัวของอุปกรณ์และส่งต่อไปยังโปรแกรมเล่นสื่อเพื่อถอดรหัสเซ็กเมนต์วิดีโอแบบเรียลไทม์

โมดูลถอดรหัสเนื้อหา (CDM)

CDM คือโมดูลซอฟต์แวร์หรือฮาร์ดแวร์ที่ได้รับการป้องกันซึ่งทำการถอดรหัสเนื้อหา บน Android CDM ถูก implement ที่ระดับ MediaDrm API; บน iOS มันถูกฝังใน AVFoundation ผ่าน AVContentKeySession CDM ไม่เคยเปิดเผยคีย์ให้กับแอปพลิเคชัน — การดำเนินการเข้ารหัสทั้งหมดจะดำเนินการภายในสภาพแวดล้อมที่ปลอดภัย (TEE — Trusted Execution Environment)

บนอุปกรณ์ที่รองรับฮาร์ดแวร์ (Secure Level 1) CDM ทำงานภายใน TEE — คีย์ไม่เคยเข้าสู่หน่วยความจำหลักของอุปกรณ์ นี่คือข้อกำหนดของสตูดิโอสำหรับการเล่นเนื้อหา 4K HDR บนอุปกรณ์ที่ไม่มี TEE คีย์จะถูกถอดรหัสด้วยซอฟต์แวร์ (L3) ซึ่งลดความปลอดภัยและจำกัดคุณภาพสูงสุดที่ 540p

รูปแบบ DRM หลัก

สามระบบ DRM ครองแพลตฟอร์มมือถือ แต่ละระบบเป็นเอกสิทธิ์สำหรับระบบนิเวศของตน แต่ทั้งหมดรองรับ CENC ซึ่งอนุญาตให้ใช้สตรีมเนื้อหาที่เข้ารหัสเดียวบนทุกแพลตฟอร์ม

DRMผู้พัฒนาแพลตฟอร์มคุณภาพสูงสุดการป้องกันฮาร์ดแวร์
WidevineGoogleAndroid, Chrome, Android TV4K HDR (L1)TEE (L1)
FairPlayAppleiOS, iPadOS, macOS, tvOS4K HDR (iOS)Secure Enclave
PlayReadyMicrosoftWindows, Xbox, Windows Phone4K (SL3000)TPM + TEE

การเลือก DRM สำหรับบริการหลายแพลตฟอร์ม

สำหรับบริการสตรีมมิงที่ทำงานบนทุกแพลตฟอร์ม จำเป็นต้องรองรับทั้งสามระบบ DRM วิธีแก้ปัญหาที่ใช้งานได้จริงคือการใช้ CDN ที่รองรับ Multi-DRM (Muvi, Vualto, Axinom) ซึ่งจะกำหนดเส้นทางคำขอสิทธิ์การใช้งานไปยังเซิร์ฟเวอร์ที่เหมาะสมโดยอัตโนมัติตามอุปกรณ์ของผู้ใช้ ตาม Streaming Learning Center (2025) 78% ของบริการสตรีมมิงใช้แนวทาง Multi-DRM

มาตรฐาน MPEG-DASH กับ CENC ทำให้สถาปัตยกรรมง่ายขึ้น: เนื้อหาถูกเข้ารหัสครั้งเดียวด้วยคีย์ที่ใช้ร่วมกัน และระบบ DRM จะถูกเลือกที่ฝั่งไคลเอ็นต์ เซิร์ฟเวอร์สิทธิ์การใช้งานได้รับคำขอพร้อมตัวระบุอุปกรณ์และส่งคืนคีย์ที่เข้ารหัสสำหรับ CDM เฉพาะ ไม่มีความแตกต่างในเนื้อหาสำหรับแพลตฟอร์มต่าง ๆ — เพียงเซิร์ฟเวอร์สิทธิ์การใช้งานที่แตกต่างกัน

Widevine: ระดับและคุณสมบัติ

Widevine คือระบบ DRM ของ Google ซึ่งเป็นมาตรฐานโดยพฤตินัยบน Android รองรับสามระดับความปลอดภัยที่กำหนดว่าการถอดรหัสเนื้อหาจะเกิดขึ้นที่ไหนและอย่างไร ระดับความปลอดภัยขึ้นอยู่กับความสามารถของฮาร์ดแวร์ของอุปกรณ์และกำหนดความละเอียดสูงสุดของเนื้อหา

ระดับความปลอดภัยของ Widevine

Widevine L1 (ฮาร์ดแวร์) — ระดับที่ปลอดภัยที่สุด การดำเนินการเข้ารหัสทั้งหมดจะดำเนินการภายใน Trusted Execution Environment (TEE) คีย์ไม่เคยออกจากพื้นที่ปลอดภัย อุปกรณ์ L1 สามารถเล่นเนื้อหาได้ถึง 4K HDR จำเป็นต้องได้รับการรับรองจาก Google — เป็นกระบวนการที่อุปกรณ์เรือธงต้องผ่าน

Widevine L3 (ซอฟต์แวร์) — การถอดรหัสจะดำเนินการในหน่วยความจำหลักของอุปกรณ์ ผู้โจมตีที่มีความสามารถทางเทคนิคสามารถแยกคีย์ออกมาได้ ความละเอียดถูกจำกัดที่ 540p (960x540) สำหรับเนื้อหาพรีเมียม อุปกรณ์ Android ทั้งหมดรองรับ L3 แม้ว่าจะไม่ได้รับการรับรองสำหรับ L1

Widevine L2 — ระดับกลางที่หายากซึ่งการถอดรหัสจะดำเนินการใน TEE แต่การเรนเดอร์ผ่านเส้นทางที่ไม่มีการป้องกัน ใช้บนสมาร์ททีวีบางรุ่น แทบไม่พบบนอุปกรณ์มือถือ

วิธีกำหนดระดับ Widevine บนอุปกรณ์

kotlin
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"
    }
}

เมธอดสอบถาม CDM สำหรับคุณสมบัติ securityLevel ผ่าน UUID ของ Widevine ค่าที่ส่งคืนคือสตริง L1, L2 หรือ L3 ซึ่งระบุระดับการป้องกันปัจจุบันของอุปกรณ์ ข้อมูลนี้สำคัญสำหรับบริการสตรีมมิง: หากอุปกรณ์มีเพียง L3 จะไม่สามารถแสดงเนื้อหา 4K ได้

Apple FairPlay: สถาปัตยกรรมและหลักการทำงาน

FairPlay คือระบบ DRM ของ Apple ที่ฝังอยู่ในทุกแพลตฟอร์มของระบบนิเวศ: iOS, iPadOS, macOS, tvOS และ watchOS ต่างจาก Widevine ตรงที่ FairPlay ไม่มีระดับความปลอดภัย — การป้องกันถูกกำหนดโดยอุปกรณ์ บน iOS ที่มี Secure Enclave FairPlay ให้ระดับการป้องกันที่เทียบได้กับ Widevine L1

FairPlay ทำงานเฉพาะกับโปรโตคอล HLS (HTTP Live Streaming) เท่านั้น เนื้อหาถูกบรรจุเป็นเซ็กเมนต์ .ts (MPEG-TS) หรือส่วน .m4s (fMP4) ไฟล์ประกาศ M3U8 มีแท็ก #EXT-X-KEY พร้อม URI ของเซิร์ฟเวอร์สิทธิ์การใช้งาน (KSM — Key Server Module) และ IV เริ่มต้น เมื่อเริ่มเล่น AVPlayer อ่านไฟล์ประกาศและขอคีย์ผ่าน AVContentKeySession

การรวม FairPlay Streaming

swift
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 รองรับ คีย์ถาวร — การบันทึกสิทธิ์การใช้งานบนอุปกรณ์สำหรับการดูออฟไลน์ หลังจากได้รับคีย์ แอปพลิเคชันเรียก processContentKeyResponse ด้วยแฟล็ก allowsPersistableKey คีย์จะถูกจัดเก็บใน Keychain และสามารถใช้ได้โดยไม่ต้องติดต่อเซิร์ฟเวอร์ในการเล่นครั้งถัดไป อย่างไรก็ตาม สิทธิ์การใช้งานออฟไลน์มีระยะเวลาที่จำกัด — โดยปกติ 7–30 วัน หลังจากนั้นจำเป็นต้องต่ออายุ

สิทธิ์การใช้งานออฟไลน์ถูกจัดเก็บในที่เก็บที่ได้รับการป้องกันของ iOS — Keychain เมื่อมีความพยายามเจลเบรกหรือแยกดัมพ์ Secure Enclave จะทำลายคีย์ ตาม Apple (2025) เทคโนโลยีคีย์ถาวรถูกใช้ใน Apple TV+, Netflix และ Disney+ สำหรับดาวน์โหลดเนื้อหาลง iPad ก่อนการเดินทาง

Microsoft PlayReady สำหรับการป้องกันสากล

PlayReady คือ DRM ของ Microsoft ใช้บน Windows, Xbox และ Windows Phone รุ่นเก่า แม้ว่า PlayReady จะพบได้น้อยบนอุปกรณ์มือถือเมื่อเทียบกับ Widevine และ FairPlay แต่ก็สำคัญสำหรับโซลูชันสตรีมมิงสากลที่ทำงานบนทุกแพลตฟอร์มของ Microsoft PlayReady รองรับทั้งการป้องกันด้วยซอฟต์แวร์และฮาร์ดแวร์ผ่าน TPM

PlayReady ใช้สถาปัตยกรรม SL (Security Level): SL2000 (ซอฟต์แวร์ คล้าย Widevine L3), SL3000 (ฮาร์ดแวร์ คล้าย L1) บน Xbox Series X, PlayReady SL3000 ทำงานผ่าน TEE+TPM — คีย์จะถูกแยกออกเฉพาะในสภาพแวดล้อมที่ได้รับการป้องกันเท่านั้น ซึ่งช่วยให้เล่น 4K Blu-ray บนคอนโซลได้โดยไม่มีความเสี่ยงในการคัดลอก

ตาม Microsoft Docs (2026) PlayReady รองรับ CENC และสามารถทำงานกับ MPEG-DASH ผ่าน Media Source Extensions (MSE) ในเบราว์เซอร์ Edge สำหรับแอปพลิเคชันมือถือบน Android และ iOS PlayReady พร้อมใช้งานผ่าน SDK แต่ไม่ค่อยได้ใช้ — ส่วนใหญ่สำหรับแอปพลิเคชันองค์กรและบริการสื่อของ Microsoft

PlayReady Native SDK สำหรับ Android

Microsoft จัดเตรียม PlayReady Native SDK สำหรับ Android และ iOS การรวมทำผ่าน ExoPlayer พร้อมส่วนขยาย PlayReady: นักพัฒนาเพิ่ม PlayReadyRenderer ซึ่งถูกฝังในห่วงโซ่การถอดรหัส ExoPlayer สลับระหว่าง Widevine และ PlayReady โดยอัตโนมัติขึ้นอยู่กับ DRM ที่ระบุในไฟล์ประกาศ MPD

แม้ว่า PlayReady จะไม่ค่อยได้ใช้ในแอปพลิเคชันมือถือ แต่การรองรับนั้นจำเป็นสำหรับบริการภายในระบบนิเวศของ Microsoft — ตัวอย่างเช่น แพลตฟอร์มการฝึกอบรมองค์กรบน SharePoint และ Stream ตาม Microsoft (2025) PlayReady ถูกใช้ใน 23% ของโซลูชันสื่อองค์กร เทียบกับ 62% สำหรับ Widevine

การรวม DRM เข้ากับแอปพลิเคชันมือถือ

การรวม DRM เข้ากับแอปพลิเคชันมือถือไม่จำเป็นต้องเขียนโค้ดการเข้ารหัส — นักพัฒนาทำงานกับโปรแกรมเล่นที่รองรับ DRM โดยตรง มาดูการรวมบน Android ผ่าน ExoPlayer พร้อมส่วนขยาย DRM

การตั้งค่า ExoPlayer รองรับ Widevine

kotlin
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 implement คำขอ HTTP ไปยังเซิร์ฟเวอร์สิทธิ์การใช้งาน — โดยทั่วไปคือ POST พร้อมเนื้อหา SignedRequest

MediaDrmCallback สำหรับขอสิทธิ์การใช้งาน

kotlin
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
}

Callback ส่งคำขอ POST ไปยังเซิร์ฟเวอร์สิทธิ์การใช้งานพร้อม UUID ของ Widevine ในเนื้อหา เซิร์ฟเวอร์ตรวจสอบการรับรองความถูกต้องของผู้ใช้ (โทเค็นในส่วนหัว) และส่งคืนคีย์ที่เข้ารหัส หากผู้ใช้ไม่มีการสมัครสมาชิกที่ใช้งานอยู่ เซิร์ฟเวอร์ส่งคืน 403 Forbidden — ExoPlayer สร้างข้อผิดพลาด DRM ซึ่งต้องจัดการผ่าน onPlayerError

การจัดการข้อผิดพลาด DRM

ข้อผิดพลาด DRM เกิดขึ้นเมื่อสิทธิ์การใช้งานไม่ถูกต้อง หมดอายุ หรืออุปกรณ์ไม่รองรับระดับการป้องกันที่ต้องการ ExoPlayer ส่งข้อผิดพลาดผ่าน Player.Listener.onPlayerError ด้วยรหัส TYPE_DRM_LICENSE_EXPIRED, TYPE_DRM_UNSUPPORTED หรือ TYPE_SOURCE แนะนำให้แสดงข้อความที่ให้ข้อมูลแก่ผู้ใช้: “เนื้อหาไม่พร้อมใช้งานสำหรับอุปกรณ์นี้” หรือ “ต่ออายุการสมัครสมาชิกของคุณเพื่อรับชม”

ตามการวิเคราะห์บริการสตรีมมิง (2025) มากถึง 8% ของการเริ่มเล่นที่ล้มเหลวเกี่ยวข้องกับข้อผิดพลาด DRM ในจำนวนนี้ 60% เป็นสิทธิ์การใช้งานหมดอายุ 25% เป็นความไม่เข้ากันของอุปกรณ์ และ 15% เป็นข้อผิดพลาดเครือข่ายระหว่างการขอคีย์ การลองซ้ำอัตโนมัติหลังจาก 5 วินาทีแก้ไข 40% ของกรณีข้อผิดพลาดเครือข่าย

คำถามที่พบบ่อย

สามารถหลบเลี่ยง DRM บนอุปกรณ์มือถือได้หรือไม่?

เป็นไปได้ในทางเทคนิคบนอุปกรณ์ที่มี Widevine L3 (การป้องกันด้วยซอฟต์แวร์) ซึ่งคีย์สามารถแยกออกจากหน่วยความจำได้ บน L1 และ FairPlay ที่มี Secure Enclave การหลบเลี่ยงทำได้ยากมาก — ต้องมีการเข้าถึง TEE ทางกายภาพ สตูดิโอเนื้อหาเน้นอุปกรณ์ L1 สำหรับเนื้อหาพรีเมียม

ทำไม Netflix แสดงคุณภาพต่ำบน Android ของฉัน?

เป็นไปได้ว่าอุปกรณ์ไม่ได้รับการรับรองสำหรับ Widevine L1 และใช้ L3 Netflix จำกัดคุณภาพที่ 540p บนอุปกรณ์ L3 ตรวจสอบระดับ Widevine ผ่านแอป DRM Info จาก Google Play อุปกรณ์เรือธงของ Samsung, Pixel และ OnePlus มักจะมี L1

DRM ไหนดีที่สุดสำหรับบริการสตรีมมิง?

ใช้ Multi-DRM: Widevine สำหรับ Android, FairPlay สำหรับ Apple, PlayReady สำหรับ Windows บริการเช่น Axinom หรือ Vualto ให้ API แบบรวมสำหรับทั้งสามระบบ DRM เนื้อหาถูกเข้ารหัสครั้งเดียวผ่าน CENC และการเลือก DRM เกิดขึ้นโดยอัตโนมัติที่ฝั่งไคลเอ็นต์

วิธี implement การดูออฟไลน์ด้วย DRM?

บน iOS ใช้ คีย์ถาวร ของ FairPlay ผ่าน AVContentKeySession บน Android ใช้สิทธิ์การใช้งานออฟไลน์ของ Widevine ผ่าน ExoPlayer OfflineLicenseHelper คีย์ถูกจัดเก็บในเครื่องใน Keychain (iOS) หรือ KeyStore (Android) โดยมีระยะเวลาที่จำกัด — โดยปกติ 7 ถึง 30 วัน

KID ในบริบทของ DRM คืออะไร?

KID (Key ID) — ตัวระบุคีย์เข้ารหัสขนาด 16 ไบต์ที่ไม่ซ้ำกันในไฟล์ประกาศ CENC แต่ละ KID ผูกกับส่วนเนื้อหาเฉพาะ (เช่น เซ็กเมนต์ 10 นาทีของภาพยนตร์) เซิร์ฟเวอร์สิทธิ์การใช้งานใช้ KID เพื่อค้นหาคีย์ที่เกี่ยวข้องในฐานข้อมูล ภาพยนตร์เรื่องเดียวอาจมี KID ที่แตกต่างกันมากถึง 20 รายการสำหรับส่วนต่าง ๆ

สรุป

  • DRM (Digital Rights Management) — ระบบป้องกันการเข้ารหัสเนื้อหาดิจิทัล จำเป็นสำหรับสตรีมมิงที่ถูกกฎหมาย
  • สามรูปแบบหลัก: Widevine (Android), FairPlay (iOS), PlayReady (Windows) — ใช้ CENC สำหรับการเข้ารหัสเนื้อหาแบบรวม
  • Widevine L1 (การป้องกันฮาร์ดแวร์ผ่าน TEE) รองรับ 4K HDR, L3 (ซอฟต์แวร์) จำกัดที่ 540p ระดับถูกตรวจสอบผ่าน MediaDrm.getPropertyString
  • FairPlay ทำงานกับ HLS เท่านั้นและใช้ AVContentKeySession เพื่อขอคีย์จากเซิร์ฟเวอร์ KSM
  • การรวม DRM ทำผ่านโปรแกรมเล่นสื่อ: ExoPlayer (Android) กับ DefaultDrmSessionManager, AVPlayer (iOS) กับ AVContentKeySession
  • ข้อผิดพลาด DRM จัดการผ่าน onPlayerError — สิทธิ์การใช้งานหมดอายุ ความไม่เข้ากันของอุปกรณ์ และความล้มเหลวของเครือข่ายคิดเป็น 8% ของการเริ่มต้นที่ล้มเหลว
  • สำหรับบริการหลายแพลตฟอร์ม แนะนำแนวทาง Multi-DRM กับผู้ให้บริการ CDN และการเข้ารหัสเนื้อหา CENC แบบรวม

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม