المتطلبات الأساسية
قبل تنفيذ DRM دون اتصال لـ FairPlay على أكثر من 10 أجهزة تعمل بنظام iOS :
- قراءة متطلبات ترخيص Apple FairPlay وتكوينه
- احصل على FPS SDK من شبكة مطوري Apple. يحتوي FPS SDK على مكونين:
- FPS Server SDK، الذي يحتوي على وحدة أمان المفتاح (KSM)، وعينات العميل، والمواصفات، ومجموعة من متجهات الاختبار.
- حزمة توزيع FPS، التي تحتوي على مواصفات الدالة D، جنبا إلى جنب مع إرشادات حول كيفية إنشاء المفتاح الخاص الخاص بعميل شهادة FPS، ومفتاح سر التطبيق. لا تصدر Apple حزمة نشر FPS إلا لموفري المحتوى المرخصين.
- تحتوي ملفات شهادات .der/.cer التي تتلقاها كجزء من إنشاء شهادة FPS على مفتاح عام ويمكن توفيرها للعميل. يجب تأمين المفتاح الخاص (.pfx) في Azure Key Vault أو موقع آمن آخر.
تخزين مفتاح FairPlay الخاص (.pfx) في Azure Key Vault
يجب التعامل مع المفتاح الخاص (.pfx) الذي تتلقاه من Apple كشهادة آمنة ويمكن تخزينه في Azure Key Vault.
- يجب أولا تحويل ملف شهادة .pfx إلى ملف نصي أساسي 64 بواسطة المسؤول
- بمجرد التحويل، يمكن تخزين هذا الملف في Azure DevOps Services كملف نصي آمن.
- يمكن بعد ذلك تخزين السلسلة في Azure KeyVault يدويا ك "كائن سري"، أو كجزء من برنامج نصي للتوزيع/الإنشاء للحل الخاص بك. يمكن رؤية مثال على تخزين شهادة FairPlay الخاصة في Azure KeyVault في نموذج التعليمات البرمجية لمشروع Gridwich
- اختياريا، قم بتخزين كلمة المرور لملف .pfx كسر في مخزن المفاتيح.
مثال على البرنامج النصي CLI
لنسخ ملف المفتاح الخاص المشفر base64 إلى Azure KeyVault:
set -eu
echo key vault : $SHARED_KV_NAME
echo "Copying FairPlay certificate to key vault as secret"
az keyvault secret set --vault-name $SHARED_KV_NAME -n ams-fairPlay-certificate-b64 -f $(FairPlayCertificate.secureFilePath) --output none
استنساخ العينة
استنساخ نماذج Media Services .Net.
git clone https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials.git
تعديل التعليمة البرمجية
قم بتعديل التعليمات البرمجية في Encrypt with DRM باستخدام .NET لإضافة تكوينات FairPlay.
ملاحظة
Widevine غير متوفر بمنطقة GovCloud.
المتطلبات الأساسية
قبل تنفيذ DRM دون اتصال لخدمة Widevine على أجهزة Android، يجب أولًا القيام بما يلي:
تمكين وضع غير متصل
لتمكين وضع عدم الاتصال لتراخيص Widevine، قم بتكوين قالب ترخيص Widevine. في الكائن policy_overrides ، قم بتعيين الخاصية can_persist إلى true، كما هو موضح في ConfigureWidevineLicenseTemplate.
أسهل طريقة لتطوير تطبيق مشغل أصلي لأجهزة نظام Android هي استخدام Google ExoPlayer SDK، وهو عدة تطوير البرامج لمشغل فيديو مفتوح المصدر. يدعم ExoPlayer الميزات غير المدعومة حاليًا من قبل واجهة برمجة تطبيقات MediaPlayer الأصلية في Android، بما في ذلك بروتوكولات تسليم MPEG-DASH وMicrosoft Smooth Streaming.
يتضمن الإصدار 2.6 من ExoPlayer والإصدارات الأحدث العديد من الفئات التي تدعم تشغيل خدمة Widevine DRM دون اتصال. على وجه الخصوص، OfflineLicenseHelper
توفر الفئة وظائف الأداة المساعدة لتسهيل استخدام DefaultDrmSessionManager لتنزيل التراخيص دون اتصال وتجديدها وإصدارها. تدعم الفئات المتوفرة في مجلد library/core/src/main/java/com/google/android/exoplayer2/offline/
SDK تنزيل محتوى الفيديو دون اتصال.
تسهل القائمة التالية من الفئات وضع دون اتصال في ExoPlayer SDK لنظام التشغيل Android:
library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java
library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java
library/core/src/main/java/com/google/android/exoplayer2/offline/SegmentDownloader.java
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloaderConstructorHelper.java
library/core/src/main/java/com/google/android/exoplayer2/offline/Downloader.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/offline/DashDownloader.java
يجب على المطورين الرجوع إلى دليل مطورو ExoPlayerومدونة المطور المقابلة أثناء تطوير التطبيقات.
العمل مع أجهزة نظام Android القديمة
بالنسبة لبعض أجهزة نظام Android القديمة، يجب تعيين القيم لخصائص policy_overrides التالية (المعرفة في قالب ترخيص Widevine: rental_duration_secondsplayback_duration_secondslicense_duration_seconds. بدلا من ذلك، يمكنك تعيينها إلى 0
، مما يعني أنه لا يوجد تقييد للوقت.
تحذير
ويجب تعيين القيم لتجنب خطأ تجاوز عدد صحيح. لمزيد من الشرح حول المشكلة، راجع https://github.com/google/ExoPlayer/issues/3150 وhttps://github.com/google/ExoPlayer/issues/3112.
إذا لم تقم بتعيين القيم بشكل صريح، فسيتم تعيين قيم كبيرة للغاية لـ PlaybackDurationRemaining وLicenseDurationRemaining، (على سبيل المثال، 9223372036854775807، وهي القيمة الموجبة القصوى لعدد صحيح 64 بت). ونتيجة لذلك، يظهر ترخيص Widevine منتهيًا الصلاحية وبالتالي لن يحدث فك التشفير.
لا تحدث هذه المشكلة على أنظمة Android 5.0 Lollipop أو أحدث نظرًا لأن Android 5.0 هو إصدار Android الأول، والذي تم تصميمه لدعم ARMv8 بالكامل (جهاز RISC المتقدم) والأنظمة الأساسية 64 بت، بينما تم تصميم Android 4.4 KitKat في الأصل لدعم منصات ARMv7 و32 بت كما هو الحال مع إصدارات Android القديمة الأخرى.
استخدام Xamarin لإنشاء تطبيق تشغيل Android
يمكنك العثور على روابط Xamarin لمشغل ExoPlayer باستخدام الارتباطات التالية:
راجع أيضًا مؤشر الترابط التالي: ربط Xamarin.
تطبيقات مشغل Chrome لنظام Android
بدءًا من إصدار 62 من Chrome لنظام Android، يتم دعم الترخيص المستمر في EME.
Widevine L1 يُدعم الآن أيضًا في Chrome لنظام Android. يسمح لك هذا بإنشاء تطبيقات تشغيل دون اتصال في Chrome إذا كان لدى المستخدمين النهائيين هذا الإصدار (أو أحدث) من Chrome.
بالإضافة إلى ذلك، أنتجت Google عينة تطبيق ويب تقدمي (PWA):
إذا قمت بترقية مستعرض Chrome للأجهزة المحمولة إلى الإصدار 62 (أو أعلى) على هاتف Android واختبار نموذج التطبيق المستضاف أعلاه، فسترى أن كلا من الدفق عبر الإنترنت وعمل التشغيل دون اتصال.
يتألف تطبيق PWA مفتوح المصدر أعلاه في Node.js. إذا كنت ترغب في استضافة الإصدار الخاص بك على خادم Ubuntu، فضع في الاعتبار المشكلات الشائعة التالية التي يمكن أن تمنع التشغيل:
- مشكلة CORS: تتم استضافة نموذج الفيديو في نموذج التطبيق داخل https://storage.googleapis.com/biograf-video-files/videos/. قامت Google بإعداد CORS لجميع عينات الاختبار لديهم المستضافة في مستودع Google Cloud Storage. يتم تقديمها مع عناوين CORS، مع تحديد إدخال CORS صراحةً:
https://biograf-155113.appspot.com
(المجال الذي تستضيف فيه google العينة) لمنع الوصول من قبل أي مواقع أخرى. إذا حاولت ذلك، فسترى خطأ HTTP التالي: Failed to load https://storage.googleapis.com/biograf-video-files/videos/poly-sizzle-2015/mp4/dash.mpd: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https:\//13.85.80.81:8080' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
- مشكلة الشهادة: بدءًا من الإصدار 58 من Chrome، يتطلب EME لـ Widevine HTTPS. ولذلك، تحتاج إلى استضافة نموذج التطبيق عبر HTTPS مع شهادة X509. لا تعمل شهادة الاختبار المعتادة بسبب المتطلبات التالية: تحتاج للحصول على شهادة تفي بالحد الأدنى من المتطلبات التالية:
- يتطلب Chrome وFirefox وجود إعداد اسم بديل SAN-Subject في الشهادة
- يجب أن تحتوي الشهادة على مرجع مُصدّق موثوق به ولا تعمل شهادة تطوير موقعة ذاتيًا
- يجب أن تحتوي الشهادة على CN يطابق اسم DNS لخادم شبكة الويب أو البوابة
يحتوي تنسيق ملف الدفق السلس (PIFF) مع H264/AAC على ربط مع PlayReady (AES-128 CTR). ملف .ismv المتدفق السلس، بافتراض أن الصوت متمرس في الفيديو، وهو في حد ذاته fMP4 ويمكن استخدامه للتشغيل. إذا مر محتوى الدفق السلس عبر تشفير PlayReady، يصبح كل ملف .ismv جزءا MP4 محميا من PlayReady. يمكنك اختيار ملف .ismv مع معدل البت المفضل وإعادة تسميته ك .mp4 للتنزيل.
يوجد خياران لاستضافة MP4 المحمي من PlayReady للتنزيل التدريجي:
- يمكنك وضع MP4 في نفس أصل خدمة الحاوية/الوسائط واستخدام نقطة نهاية تدفق Azure Media Services للتنزيل التدريجي.
- يمكنك استخدام عنوان URL SAS للتنزيل التدريجي مباشرة من Azure Storage.
بإمكانك استخدام نوعين من تسليم ترخيص PlayReady:
- خدمة تسليم ترخيص PlayReady في Azure Media Services
- خوادم ترخيص PlayReady مستضافة في أي مكان.
للحصول على ترخيص PlayReady باستخدام خدمة تسليم AMS، راجع قالب ترخيص Media Services v3 مع PlayReady.
لاختبار التشغيل، يمكنك استخدام Universal Windows Application على Windows 10. في عينات عالمية لنظام Windows 10، هناك عينة مشغل أساسية تسمى عينة دفق تكيفية. أضف التعليمات البرمجية لاختيار الفيديو الذي تم تنزيله واستخدمه كمصدر، بدلا من مصدر البث التكيفي.