- يتيح متصفّح Chrome فك ترميز الفيديوهات بتنسيق AV1.
- أصبح بإمكانك الآن الاستعلام عن مخططات التشفير المتاحة من خلال ملف ملف برمجة التطبيقات (PEM) لأمان طبقة المقابس الموحّدة (TME).
- يمكن لمطوّري الويب تجربة الاستعلام عمّا إذا كان يمكن فرض سياسة HDCP معيّنة.
- تستخدم "إضافات مصدر الوسائط" الآن الوقت المنقضي منذ بدء التسجيل لنطاقات التخزين المؤقت وقيم المدة.
- يمكن لمستخدمي Android Go فتح الملفات الصوتية والفيديوهات والصور التي تم تنزيلها في Chrome.
- تتم إزالة الأحداث المتوقّفة لعناصر الوسائط التي تستخدم MSE.
أداة فك ترميز الفيديوهات بتنسيق AV1
Chromestatus Tracker | Chromium Bug
EME: الاستعلام عن مدى توفّر مخطط التشفير
لا تتيح بعض المنصات أو أنظمة إدارة المفاتيح سوى وضع CENC، في حين تتيح أنظمة أخرى سوى وضع CBCS. ويمكن لبعض الأجهزة الأخرى استخدام كلتا الطريقتَين. إنّ مخطّطَي التشفير هذين غير متوافقَين، لذا يجب أن يتمكّن مطوّرو الويب من اتخاذ خيارات ذكية بشأن المحتوى الذي سيتم عرضه.
لتجنُّب تحديد النظام الأساسي الذي يعمل عليه التطبيق للتحقّق من توفّر أحد مخططات التشفير المعروفة،تتم إضافة مفتاح encryptionScheme
جديد في قائمة MediaKeySystemMediaCapability
للسماح للمواقع الإلكترونية بتحديد مخطط التشفير الذي يمكن استخدامه في إضافات الوسائط المشفّرة (EME).
يمكن أن يكون مفتاح encryptionScheme
الجديد إحدى القيمتَين التاليتَين:
'cenc'
تشفير عيّنة كاملة وجزء فرعي من NAL للفيديو في وضع AES-CTR'cbcs'
تشفير جزئي لنمط NAL للفيديو في وضع AES-CBC
في حال عدم تحديد مخطط تشفير، يعني ذلك أنّ أي مخطط تشفير مقبول. يُرجى العلم
أنّ مفتاح التشفير الواضح يتيح دائمًا استخدام مخطط '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']
}]);
Intent to Implement | Chromestatus Tracker | Chromium Bug
EME: التحقّق من سياسة HDCP
في الوقت الحالي، يُعدّ HDCP أحد متطلبات السياسة الشائعة لبث المحتوى المحمي بدرجات دقة عالية. وعلى مطوّري الويب الذين يريدون فرض سياسة HDCP الانتظار إلى أن تكتمل عملية تبادل الترخيص أو بدء بث المحتوى بدرجة دقة منخفضة. هذا موقف مزعج يهدف HDCP Policy Check API إلى حلّه.
تسمح واجهة برمجة التطبيقات المقترَحة لمطوّري الويب بمعرفة ما إذا كان بإمكانهم فرض سياسة HDCP معيّنة
كي يتمكّنوا من بدء التشغيل بدرجة الدقة المثلى لتوفير
أفضل تجربة للمستخدم. وتتألف من طريقة بسيطة لاستعلام حالة
مفتاح افتراضي مرتبط بسياسة HDCP، بدون الحاجة إلى إنشاء
MediaKeySession
أو جلب ترخيص حقيقي. ولا يتطلّب ذلك أيضًا أن يكون MediaKeys
مرتبطًا
بأي عناصر صوتية أو فيديو.
تعمل واجهة برمجة التطبيقات HDCP Policy Check API ببساطة من خلال استدعاء
mediaKeys.getStatusForPolicy()
باستخدام عنصر يحتوي على مفتاح minHdcpVersion
وقيمة صالحة. إذا كان بروتوكول HDCP متاحًا بالإصدار المحدّد، يتم حلّ
الوعد المعروض بقيمة MediaKeyStatus
='usable'
. بخلاف ذلك، يتم حلّ الوعد
باستخدام قيم خطأ أخرى من MediaKeyStatus
مثل
'output-restricted'
أو 'output-downscaled'
. إذا كان نظام إدارة المفاتيح لا يسمح أبدًا بإجراء فحص سياسة HDCP (مثل نظام Clear Key System)، يتم رفض الوعد.
في ما يلي آلية عمل واجهة برمجة التطبيقات في الوقت الحالي. اطّلِع على العينة الرسمية لتجربة جميع إصدارات 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 في الإصدار 69 من Chrome لأجهزة الكمبيوتر المكتبي (ChromeOS وLinux وMac وWindows).
وانتهت الفترة التجريبية بنجاح في تشرين الثاني (نوفمبر) 2018.
Intent to Experiment | Chromestatus Tracker | Chromium Bug
الامتثال لمعايير PTS/DTS في MSE
يتم الآن تسجيل النطاقات المخزّنة مؤقتًا وقيم المدة حسب فواصل الطابع الزمني لعرض المحتوى (PTS)، بدلاً من فواصل الطابع الزمني لفك التشفير (DTS) في إضافات مصدر الوسائط (MSE).
عندما كان معيار MSE جديدًا، تم اختبار تنفيذه في Chrome على WebM وMP3، وبعض تنسيقات مجرى الوسائط التي لم يكن فيها فرق بين PTS وDTS. وكان يعمل بشكل جيد إلى أن تمت إضافة ISO BMFF (المعروف أيضًا باسم MP4). غالبًا ما يحتوي هذا الحاوي على بثّ زمني للعرض بترتيب غير متّسق مقارنةً ببثّ فك التشفير (لبرامج الترميز مثل H.264 مثلاً)، ما يؤدي إلى اختلاف DTS وPTS. وقد أدّى ذلك إلى تسجيل Chrome لقيم مختلفة قليلاً (عادةً) عن القيم المتوقّعة في النطاقات المخزّنة مؤقتًا ومدّة عرض الفيديو. سيتم طرح هذا السلوك الجديد تدريجيًا في الإصدار 69 من Chrome وسيتم جعل تطبيق MSE متوافقًا مع مواصفات MSE.
يؤثر هذا التغيير في MediaSource.duration
(وبالتالي
HTMLMediaElement.duration
) وSourceBuffer.buffered
(وبالتالي
HTMLMediaElement.buffered)
وSourceBuffer.remove(start, end)
.
إذا لم تكن متأكّدًا من الطريقة المستخدَمة للإبلاغ عن القيم المتعلّقة بالنطاقات التي تم تخزينها مؤقتًا ومدّة التخزين المؤقت، يمكنك الانتقال إلى صفحة chrome://media-internals
الداخلية والبحث عن
"ChunkDemuxer: buffering by PTS" أو "ChunkDemuxer: buffering by DTS" فيملفّات السجلّ.
Intent to Implement | Chromium Bug
التعامل مع نوايا عرض الوسائط على Android Go
Android Go هو إصدار خفيف من Android مصمّم للهواتف الذكية البسيطة. ولهذا السبب، لا يتم تضمين بعض التطبيقات المخصّصة لعرض الوسائط في الجهاز، فإذا حاول أحد المستخدمين فتح فيديو تم تنزيله مثلاً، لن يكون لديه أي تطبيقات لتنفيذ هذا الإجراء.
لحلّ هذه المشكلة، يتتبّع الإصدار 69 من Chrome على Android Go الآن نوايا عرض الوسائط لكي يتمكن المستخدمون من عرض الملفات الصوتية والفيديوهات والصور التي تم تنزيلها. وبعبارة أخرى، يحلّ محل التطبيقات غير المتوفّرة لعرض الإعلانات.
يُرجى العِلم أنّ ميزة Chrome هذه مفعّلة على جميع أجهزة Android التي تعمل بالإصدار O والإصدارات الأحدث والمزوّدة بذاكرة وصول عشوائي (RAM) بسعة 1 غيغابايت أو أقل.
إزالة الأحداث "المتوقفة" لعناصر الوسائط باستخدام MSE
يتمّ رفع حدث "توقّف مؤقت" في عنصر الوسائط إذا تعذّر تحميل بيانات الوسائط لعدّة ثوانٍ تقريبًا. عند استخدام إضافات مصدر الوسائط
(MSE)، يدير تطبيق الويب عملية التنزيل ولا يدرك عنصر الوسائط
مستوى تقدّمها. وقد أدّى ذلك إلى أن يُرسِل Chrome أحداث "توقّف مؤقت" في
مواقع غير مناسبة كلما لم يُرفِق الموقع الإلكتروني مقتطفات جديدة من بيانات الوسائط باستخدام
SourceBuffer.appendBuffer()
في آخر 3 ثوانٍ.
بما أنّ المواقع الإلكترونية قد تقرّر إلحاق أجزاء كبيرة من البيانات بمعدّل تكرار منخفض، فإنّ هذه القيمة لا تُعدّ إشارة مفيدة عن حالة التخزين المؤقت. تؤدي إزالة الأحداث "المتوقفة" لعناصر الوسائط باستخدام MSE إلى توضيح الالتباس وجعل Chrome أكثر توافقًا مع مواصفات MSE. يُرجى العِلم أنّ عناصر الوسائط التي لا تستخدِم MSE ستظل تُنشئ أحداث "توقّف التشغيل" كما هي الحال الآن.
القرار بإيقاف الميزة نهائيًا وإزالتها | تتبُّع حالة Chrome | خطأ في Chromium