- يتيح Chrome استخدام ميزة فك ترميز الفيديو AV1.
- يتوفّر الآن طلب البحث عن مخططات التشفير المتوافقة من خلال EME.
- يمكن لمطوّري البرامج على الويب تجربة استخدام الاستفسار عمّا إذا كان يمكن فرض سياسة معيّنة لدقة HDCP أم لا.
- تستخدم إضافات مصادر الوسائط الآن PTS للنطاقات المخزنة مؤقتًا وقيم المدة.
- يمكن لمستخدمي Android Go فتح ملفات الصوت والفيديو والصور التي تم تنزيلها في Chrome.
- وتتم إزالة الأحداث الثابتة لعناصر الوسائط التي تستخدم الخطأ التربيعي المتوسط.
برنامج فك ترميز الفيديوهات AV1
Chromestatus Tracker | خطأ Chromium
EME: طلب البحث عن مخطط التشفير
تتيح بعض الأنظمة الأساسية أو الأنظمة الأساسية استخدام وضع CENC فقط، في حين أنّ البعض الآخر يتيح استخدام وضع CBCS فقط. ولا يزال بإمكان الآخرين دعم كلا الأمرين. إن نظامي التشفير هذين غير متوافقين، لذا يجب أن يكون مطورو الويب قادرين على اتخاذ خيارات ذكية بشأن المحتوى الذي سيتم عرضه.
لتجنُّب الاضطرار إلى تحديد النظام الأساسي الذي يستخدمونه للتحقق من توافق
نظام التشفير "المعروف"،
تمت إضافة مفتاح encryptionScheme
جديد إلى
MediaKeySystemMediaCapability
القاموس للسماح للمواقع الإلكترونية بتحديد
نظام التشفير الذي يمكن استخدامه في إضافات الوسائط المشفرة (EME).
يمكن أن يكون مفتاح encryptionScheme
الجديد واحدة من قيمتَين:
'cenc'
النموذج الكامل لوضع AES-CTR وتشفير النموذج الفرعي للفيديو (NAL)'cbcs'
التشفير الجزئي لنمط NAL للفيديو في وضع AES-CBC
في حال عدم تحديد هذه السياسة، يعني ذلك أنّ أي نظام تشفير مقبول. تجدر الإشارة إلى أنّ ميزة Clear Key (محو المفتاح) متوافقة دائمًا مع المخطط 'cenc'
.
يوضح المثال أدناه كيفية إجراء طلب بحث عن طريقتَي ضبط باستخدام مخططات تشفير مختلفة. في هذه الحالة، سيتم اختيار عبارة واحدة فقط.
await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [
{
label: 'configuration using the "cenc" encryption scheme',
videoCapabilities: [{
contentType: 'video/mp4; codecs="avc1.640028"',
encryptionScheme: 'cenc'
}],
audioCapabilities: [{
contentType: 'audio/mp4; codecs="mp4a.40.2"',
encryptionScheme: 'cenc'
}],
initDataTypes: ['keyids']
},
{
label: 'configuration using the "cbcs" encryption scheme',
videoCapabilities: [{
contentType: 'video/mp4; codecs="avc1.640028"',
encryptionScheme: 'cbcs'
}],
audioCapabilities: [{
contentType: 'audio/mp4; codecs="mp4a.40.2"',
encryptionScheme: 'cbcs'
}],
initDataTypes: ['keyids']
},
]);
في المثال أدناه، يتم الاستعلام عن تهيئة واحدة فقط مع نظامي تشفير مختلفين. وفي هذه الحالة، سيتجاهل Chrome أي كائن إمكانات لا يمكن دعمه، لذا قد تحتوي الإعدادات المتراكمة على نظام تشفير واحد أو كليهما.
await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{
videoCapabilities: [
{ // A video capability using the "cenc" encryption scheme
contentType: 'video/mp4; codecs="avc1.640028"',
encryptionScheme: 'cenc'
},
{ // A video capability using the "cbcs" encryption scheme
contentType: 'video/mp4; codecs="avc1.640028"',
encryptionScheme: 'cbcs'
},
],
audioCapabilities: [
{ // An audio capability using the "cenc" encryption scheme
contentType: 'audio/mp4; codecs="mp4a.40.2"',
encryptionScheme: 'cenc'
},
{ // An audio capability using the "cbcs" encryption scheme
contentType: 'audio/mp4; codecs="mp4a.40.2"',
encryptionScheme: 'cbcs'
},
],
initDataTypes: ['keyids']
}]);
هدف التنفيذ | Chromestatus Tracker | خطأ Chromium
EME: التحقُّق من سياسة HDCP
في الوقت الحالي، يُعدّ HDCP من متطلبات السياسة الشائعة لبث المحتوى المحمي بدرجات دقة عالية. وعلى مطوّري الويب الذين يريدون فرض سياسة HDCP إما الانتظار حتى اكتمال تبادل التراخيص أو بدء بث المحتوى بدقة منخفضة. تهدف واجهة برمجة تطبيقات التحقق من سياسة HDCP إلى حل هذه المشكلة.
تتيح واجهة برمجة التطبيقات المقترَحة هذه لمطوّري البرامج على الويب الاستعلام عمّا إذا كان من الممكن فرض سياسة معيّنة لدقة HDCP لكي يبدأ التشغيل بأفضل دقة ممكنة لتقديم أفضل تجربة للمستخدم. وهو يتألّف من طريقة بسيطة للاستعلام عن حالة
مفتاح افتراضي مرتبط بسياسة HDCP، بدون الحاجة إلى إنشاء
MediaKeySession
أو استرجاع ترخيص حقيقي. لا يتطلّب الأمر إرفاق MediaKeys
بأي عناصر صوتية أو عناصر فيديو أيضًا.
تعمل واجهة HDCP Policy Check API من خلال استدعاء
mediaKeys.getStatusForPolicy()
بكائن يحتوي على مفتاح minHdcpVersion
وقيمة صالحة. في حال توفُّر HDCP في الإصدار المحدّد، يتم التعامل مع الوعد المعروض بقيمة MediaKeyStatus
بقيمة 'usable'
. في الحالات الأخرى، يتم التعامل مع قيم الأخطاء الأخرى ضمن MediaKeyStatus
، مثل 'output-restricted'
أو 'output-downscaled'
. إذا كان نظام المفاتيح لا يتوافق مع سياسة التحقّق من بروتوكول HDCP مطلقًا (على سبيل المثال، نظام مسح المفاتيح)، يتم رفض الوعد.
باختصار، إليك آلية عمل واجهة برمجة التطبيقات في الوقت الحالي. يمكنك الاطّلاع على النموذج الرسمي لتجربة جميع إصدارات HDCP.
const config = [{
videoCapabilities: [{
contentType: 'video/webm; codecs="vp09.00.10.08"',
robustness: 'SW_SECURE_DECODE' // Widevine L3
}]
}];
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(mediaKeySystemAccess => mediaKeySystemAccess.createMediaKeys())
.then(mediaKeys => {
// Get status for HDCP 2.2
return mediaKeys.getStatusForPolicy({ minHdcpVersion: '2.2' })
.then(status => {
if (status !== 'usable')
return Promise.reject(status);
console.log('HDCP 2.2 can be enforced.');
// TODO: Fetch high resolution protected content...
});
})
.catch(error => {
// TODO: Fallback to fetch license or stream low-resolution content...
});
متاحة لمرحلة التجربة والتقييم
للحصول على ملاحظات من مطوّري البرامج على الويب، أضفنا سابقًا ميزة HDCP Policy Check API في Chrome 69 لأجهزة الكمبيوتر المكتبي (ChromeOS وLinux وMac وWindows).
انتهت الفترة التجريبية بنجاح في تشرين الثاني (نوفمبر) 2018.
هدف إلى إجراء تجربة | Chromestatus Tracker | خطأ Chromium
التوافق مع MSE PTS/DTS
يتم الآن الإبلاغ عن النطاقات المخزَّنة مؤقتًا وقيم المدة حسب الفواصل الزمنية للطابع الزمني للعرض التقديمي (PTS) بدلاً من فواصل ترميز الطابع الزمني (DTS) في إضافات مصادر الوسائط (MSE).
عندما كان الخطأ التربيعي المتوسط جديدًا، تم اختبار التنفيذ في Chrome مقابل WebM وMP3، وهي بعض تنسيقات بث الوسائط حيث لم يكن هناك فرق بين PTS وDTS. وكان يعمل بشكل جيد حتى تمت إضافة ISO BMFF (المعروف أيضًا باسم MP4). غالبًا ما تحتوي هذه الحاوية على عرض تقديمي خارج الترتيب أو تدفقات الوقت لفك الترميز (لبرامج الترميز مثل H.264 على سبيل المثال)، ما يؤدي إلى اختلاف DTS وPTS. وقد تسبب ذلك في أن أبلغ Chrome (عادةً ما يكون ذلك قليلاً) عن نطاقات مخزّنة مؤقتة وقيم مدة أكثر عن المتوقع. سيتم طرح هذا السلوك الجديد تدريجيًا في الإصدار 69 من Chrome وجعل تنفيذ الخطأ التربيعي المتوسط متوافقًا مع مواصفات الخطأ التربيعي المتوسط.
سيؤثّر هذا التغيير في "MediaSource.duration
" (وبالتالي
HTMLMediaElement.duration
) و"SourceBuffer.buffered
" (وبالتالي
HTMLMediaElement.buffered)
) و"SourceBuffer.remove(start, end)
".
إذا لم تكن متأكدًا من الطريقة المستخدمة للإبلاغ عن النطاقات المخزّنة مؤقتًا وقيم
المدة، يمكنك الانتقال إلى صفحة chrome://media-internals
الداخلية والبحث عن
"ChunkDemuxer: buffer by PTS" أو "ChunkDemuxer: buffering by DTS"
في السجلات.
التعامل مع الأهداف المرتبطة بعرض الوسائط على Android Go
Android Go هو إصدار خفيف من Android تمّ تصميمه للهواتف الذكية المبتدئة. وتحقيقًا لهذه الغاية، لا يتم تضمين بعض تطبيقات عرض الوسائط بالضرورة في التطبيق، لذا إذا حاول المستخدم فتح فيديو تم تنزيله مثلاً، لن يكون لديه أي تطبيقات لمعالجة هذا الهدف.
لحلّ هذه المشكلة، يستمع Chrome 69 على Android Go الآن إلى أغراض مشاهدة الوسائط ليتمكّن المستخدمون من عرض الصوت والفيديوهات والصور التي تم تنزيلها. بمعنى آخر، يأخذ مكان تطبيقات العرض المفقودة.
تجدر الإشارة إلى أنّ ميزة Chrome هذه مفعَّلة على جميع أجهزة Android التي تعمل بنظام التشغيل Android O والإصدارات الأحدث التي تتضمّن ذاكرة وصول عشوائي (RAM) بسعة 1 غيغابايت أو أقل.
إزالة الأحداث "المتوقفة" لعناصر الوسائط التي تستخدم الخطأ التربيعي المتوسط
يتم رفع حدث "متوقف" على أحد عناصر الوسائط في حال فشل تنزيل بيانات الوسائط
لمدة 3 ثوانٍ تقريبًا. عند استخدام إضافات مصادر الوسائط
(MSE)، يدير تطبيق الويب عملية التنزيل ولا يكون عنصر الوسائط على دراية
بمدى تقدُّمه. وقد تسبب ذلك في أن يرفع Chrome الأحداث "المتوقفة" في أوقات غير مناسبة
عندما لا يلحق الموقع الإلكتروني أجزاءً جديدة من بيانات الوسائط بـ
SourceBuffer.appendBuffer()
في آخر 3 ثوانٍ.
نظرًا لأن مواقع الويب قد تقرر إلحاق مجموعات كبيرة من البيانات بمعدل تكرار منخفض، فهذه ليست إشارة مفيدة حول سلامة التخزين المؤقت. تؤدي إزالة الأحداث "المتوقفة" لعناصر الوسائط التي تستخدم الخطأ التربيعي المتوسط إلى إزالة الالتباس وجعل Chrome أكثر توافقًا مع مواصفات الخطأ التربيعي المتوسط. لاحظ أن عناصر الوسائط التي لا تستخدم الخطأ التربيعي المتوسط ستستمر في عرض الأحداث "المتوقفة" كما هي الحال الآن.