تعديلات الوسائط في الإصدار 69 من Chrome

François Beaufort
François Beaufort

برنامج فك ترميز الفيديوهات 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. وجعل تنفيذ الخطأ التربيعي المتوسط متوافقًا مع مواصفات الخطأ التربيعي المتوسط.

PTS/DTS
PTS/DTS

يؤثر هذا التغيير في MediaSource.duration (وبالتالي HTMLMediaElement.duration) وSourceBuffer.buffered (وبالتالي HTMLMediaElement.buffered)، وSourceBuffer.remove(start, end).

إذا لم تكن متأكدًا من الطريقة المستخدمة للإبلاغ عن النطاقات التي تم تخزينها مؤقتًا والمدة يمكنك الانتقال إلى صفحة chrome://media-internals الداخلية والبحث عن "ChunkDemuxer: التخزين المؤقت بواسطة PTS" أو "ChunkDemuxer: التخزين المؤقت بواسطة DTS" في والسجلات.

نية التنفيذ | خطأ Chromium

التعامل مع أهداف عرض الوسائط على Android Go

Android Go هو إصدار خفيف من Android مصمَّم للمبتدئين. والهواتف الذكية. وتحقيقًا لهذه الغاية، ليس بالضرورة تقديم بعض مشاهدات الوسائط التطبيقات، لذا إذا حاول المستخدم فتح فيديو تم تنزيله مثلاً، لن يكون لدى أي تطبيقات لمعالجة هذا الهدف.

لحلّ هذه المشكلة، أصبح Chrome 69 في Android Go الآن يستمع إلى نية عرض الوسائط، وبالتالي يمكن للمستخدمين عرض الملفات الصوتية والفيديوهات والصور التي تم تنزيلها. بعبارة أخرى، يتطلب الأمر مكان تطبيقات العرض المفقودة.

ALT_TEXT_HERE
معالج الغرض من الوسائط

تجدر الإشارة إلى أنّ ميزة Chrome هذه مفعَّلة على جميع أجهزة Android التي تعمل بنظام التشغيل Android. O وما بعده مع ذاكرة وصول عشوائي (RAM) بسعة 1 غيغابايت أو أقل.

خطأ Chromium

إزالة كلمة "متوقّف" الأحداث للعناصر الإعلامية التي تستخدم الخطأ التربيعي المتوسط

إعلان "متوقف" يتم رفع الحدث على عنصر وسائط إذا كان تنزيل بيانات الوسائط تعذّر التقدّم لمدة 3 ثوانٍ تقريبًا. عند استخدام إضافات مصادر الوسائط (MSE)، يدير تطبيق الويب عملية التنزيل ولا يعلم عنصر الوسائط تقدمه. تسبّب ذلك في رفع مستوى عرض Chrome لكلمة "متوقّف" من الأحداث في محتوى غير مناسب المرات التي لم يرفق فيها موقع الويب مقاطع بيانات وسائط جديدة SourceBuffer.appendBuffer() في آخر 3 ثوانٍ

نظرًا لأن مواقع الويب قد تقرر إلحاق مجموعات كبيرة من البيانات بتكرار منخفض، فإن هذا ليس إشارة مفيدة حول سلامة التخزين المؤقت. جارٍ إزالة التصنيف "متوقّف" أحداث في تؤدي عناصر الوسائط باستخدام الخطأ MSE إلى إزالة الارتباك وجعل Chrome أكثر توافقًا بمواصفات الخطأ التربيعي المتوسط. لاحظ أن عناصر الوسائط التي لا تستخدم الخطأ التربيعي المتوسط مواصلة رفع القيمة "متوقّف" الأحداث كما هي الحال اليوم.

نية الإيقاف والإزالة | أداة تتبُّع Chromestatus | خطأ Chromium