- يتيح Chrome استخدام فك ترميز الفيديو AV1.
- أصبح بإمكانك الآن الاستعلام عن مخططات التشفير المتاحة من خلال EME.
- يمكن لمطوّري البرامج على الويب تجربة طلب البحث بشأن ما إذا كان يمكن فرض سياسة معيّنة متعلقة ببروتوكول HDCP.
- تستخدم "إضافات مصدر الوسائط" الآن الوقت المنقضي منذ بدء التسجيل لنطاقات التخزين المؤقت وقيم المدة.
- يمكن لمستخدمي Android Go فتح الملفات الصوتية والفيديوهات والصور التي تم تنزيلها في Chrome.
- تتم إزالة الأحداث الثابتة لعناصر الوسائط التي تستخدم الخطأ التربيعي المتوسط.
أداة فك ترميز الفيديوهات بتنسيق AV1
أداة تتبُّع Chromestatus | خطأ Chromium
EME: الاستعلام عن مدى توفّر مخطط التشفير
لا تتيح بعض المنصات أو أنظمة إدارة المفاتيح سوى وضع CENC، في حين تتيح أنظمة أخرى سوى وضع CBCS. لا يزال بإمكان مستخدمين آخرين استخدامهما معًا. إنّ مخطّطَي التشفير هذين غير متوافقَين، لذا يجب أن يتمكّن مطوّرو الويب من اتخاذ خيارات ذكية بشأن المحتوى الذي سيتم عرضه.
لتجنُّب تحديد النظام الأساسي الذي يعمل عليه التطبيق للتحقّق من توفّر encryptionScheme
أحد مخططات التشفير المعروفة، تتم إضافة مفتاح encryptionScheme
جديد في قائمة MediaKeySystemMediaCapability
للسماح للمواقع الإلكترونية بتحديد encryptionScheme
مخطط التشفير الذي يمكن استخدامه في إضافات الوسائط المشفّرة (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 (مثل مسح النظام الأساسي)، يتم رفض الوعد.
في ما يلي آلية عمل واجهة برمجة التطبيقات في الوقت الحالي. يمكنك الاطّلاع على النموذج الرسمي لتجربة جميع إصدارات 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
يتم الآن تسجيل النطاقات المخزّنة مؤقتًا وقيم المدة حسب فواصل الطابع الزمني لعرض المحتوى (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: التخزين المؤقت حسب PTS" أو "ChunkDemuxer: التخزين المؤقت حسب 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. يُرجى العلم أنّ العناصر الإعلامية التي لا تستخدم الخطأ التربيعي المتوسط ستواصل إبراز الأحداث "المتوقفة" كما هي الحال اليوم.
النية في إيقاف ميزة نهائيًا وإزالتها | تتبُّع حالة Chrome | خطأ في Chromium