- يتيح Chrome استخدام فك ترميز الفيديو AV1.
- الاستعلام عن أنظمة التشفير المتوافقة من خلال يتوفر EME الآن.
- يمكن لمطوّري البرامج على الويب تجربة طلب البحث بشأن ما إذا كان يمكن فرض سياسة معيّنة HDCP.
- تستخدم إضافات مصدر الوسائط الآن PTS للنطاقات التي تم تخزينها مؤقتًا وقيم المدة.
- يمكن لمستخدمي Android Go فتح الملفات الصوتية والفيديوهات والصور التي تم تنزيلها في Chrome.
- تتم إزالة الأحداث الثابتة لعناصر الوسائط التي تستخدم الخطأ التربيعي المتوسط.
برنامج فك ترميز الفيديوهات AV1
أداة تتبُّع Chromestatus | خطأ Chromium
EME: دعم نظام تشفير طلب البحث
بعض الأنظمة الأساسية أو الأنظمة الأساسية تتوافق فقط مع وضع CENC، في حين أنّ البعض الآخر يتيحها فقط. وضع CBCS لا يزال بإمكان مستخدمين آخرين استخدامهما معًا. يعمل هذان المخططان للتشفير غير متوافقة، لذا يجب أن يكون مطوِّرو البرامج على الويب قادرين على اتخاذ خيارات ذكية بشأن المحتوى الذي يجب عرضه
لتجنب الاضطرار إلى تحديد النظام الأساسي الذي يستخدمه للتحقق من الحالة "معروف"
للتشفير، تمت إضافة مفتاح encryptionScheme
جديد في
MediaKeySystemMediaCapability
القاموس للسماح للمواقع الإلكترونية بتحديد
نظام التشفير الذي يمكن استخدامه في إضافات الوسائط المشفرة (EME).
يمكن أن يكون مفتاح encryptionScheme
الجديد إحدى القيمتين:
'cenc'
النموذج الكامل لوضع AES-CTR وتشفير نموذج NAL الفرعي للفيديو.'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']
}]);
نية التنفيذ | أداة تتبُّع Chromestatus | خطأ Chromium
EME: التحقّق من سياسة HDCP
في الوقت الحالي، يشكّل HDCP أحد متطلبات السياسة الشائعة للبث بدقة عالية. للمحتوى المحمي ومطوّرو الويب الذين يريدون فرض سياسة HDCP عليك إمّا الانتظار إلى حين اكتمال عملية تبادل التراخيص أو بدء البث. المحتوى بدقة منخفضة. من المحزن أن سياسة HDCP تهدف واجهة برمجة التطبيقات 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 في السابق. التحقُّق من ميزة واجهة برمجة التطبيقات في الإصدار 69 من Chrome لأجهزة الكمبيوتر المكتبي (نظام التشغيل ChromeOS وLinux وMac وWindows).
انتهت الفترة التجريبية بنجاح في تشرين الثاني (نوفمبر) 2018.
الرغبة في إجراء التجربة | أداة تتبُّع Chromestatus | خطأ Chromium
التوافق مع الخطأ التربيعي المتوسط 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: التخزين المؤقت بواسطة PTS" أو "ChunkDemuxer: التخزين المؤقت بواسطة DTS" في
والسجلات.
التعامل مع أهداف عرض الوسائط على Android Go
Android Go هو إصدار خفيف من Android مصمَّم للمبتدئين. والهواتف الذكية. وتحقيقًا لهذه الغاية، ليس بالضرورة تقديم بعض مشاهدات الوسائط التطبيقات، لذا إذا حاول المستخدم فتح فيديو تم تنزيله مثلاً، لن يكون لدى أي تطبيقات لمعالجة هذا الهدف.
لحلّ هذه المشكلة، أصبح Chrome 69 في Android Go الآن يستمع إلى نية عرض الوسائط، وبالتالي يمكن للمستخدمين عرض الملفات الصوتية والفيديوهات والصور التي تم تنزيلها. بعبارة أخرى، يتطلب الأمر مكان تطبيقات العرض المفقودة.
تجدر الإشارة إلى أنّ ميزة Chrome هذه مفعَّلة على جميع أجهزة Android التي تعمل بنظام التشغيل Android. O وما بعده مع ذاكرة وصول عشوائي (RAM) بسعة 1 غيغابايت أو أقل.
إزالة كلمة "متوقّف" الأحداث للعناصر الإعلامية التي تستخدم الخطأ التربيعي المتوسط
إعلان "متوقف" يتم رفع الحدث على عنصر وسائط إذا كان تنزيل بيانات الوسائط
تعذّر التقدّم لمدة 3 ثوانٍ تقريبًا. عند استخدام إضافات مصادر الوسائط
(MSE)، يدير تطبيق الويب عملية التنزيل ولا يعلم عنصر الوسائط
تقدمه. تسبّب ذلك في رفع مستوى عرض Chrome لكلمة "متوقّف" من الأحداث في محتوى غير مناسب
المرات التي لم يرفق فيها موقع الويب مقاطع بيانات وسائط جديدة
SourceBuffer.appendBuffer()
في آخر 3 ثوانٍ
نظرًا لأن مواقع الويب قد تقرر إلحاق مجموعات كبيرة من البيانات بتكرار منخفض، فإن هذا ليس إشارة مفيدة حول سلامة التخزين المؤقت. جارٍ إزالة التصنيف "متوقّف" أحداث في تؤدي عناصر الوسائط باستخدام الخطأ MSE إلى إزالة الارتباك وجعل Chrome أكثر توافقًا بمواصفات الخطأ التربيعي المتوسط. لاحظ أن عناصر الوسائط التي لا تستخدم الخطأ التربيعي المتوسط مواصلة رفع القيمة "متوقّف" الأحداث كما هي الحال اليوم.
نية الإيقاف والإزالة | أداة تتبُّع Chromestatus | خطأ Chromium