تحديثات الوسائط في إصدار Chrome 63/64

François Beaufort
François Beaufort

إمكانيات الوسائط - فك ترميز المعلومات على واجهة برمجة التطبيقات

يعتمد مطوّرو الويب اليوم على isTypeSupported() أو canPlayType() لمعرفة ما إذا كان بالإمكان فك ترميز بعض الوسائط أم لا. وعلى الرغم من ذلك، يجب أن يكون السؤال التالي: "ما مدى جودة الأداء على هذا الجهاز؟"

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

باختصار، إليك آلية عمل واجهة برمجة التطبيقات Decode Info API في الوقت الحالي. يمكنك الاطّلاع على العيّنة الرسمية.

const mediaConfig = {
  type: 'media-source', // or 'file'
  audio: {
    contentType: 'audio/webm; codecs=opus',
    channels: '2', // audio channels used by the track
    bitrate: 132266, // number of bits used to encode a second of audio
    samplerate: 48000 // number of samples of audio carried per second
  },
  video: {
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    width: 1920,
    height: 1080,
    bitrate: 2646242, // number of bits used to encode a second of video
    framerate: '25' // number of frames used in one second
  }
};

navigator.mediaCapabilities.decodingInfo(mediaConfig).then(result => {
  console.log('This configuration is' +
      (result.supported ? '' : ' NOT') + ' supported,' +
      (result.smooth ? '' : ' NOT') + ' smooth and' +
      (result.powerEfficient ? '' : ' NOT') + ' power efficient.');
});

يمكنك تجربة إعدادات مختلفة للوسائط إلى أن تتمكّن من العثور على الإعداد الأفضل (smooth وpowerEfficient) واستخدامه لتشغيل بث الوسائط المناسب. بالمناسبة، يعتمد التنفيذ الحالي في Chrome على معلومات التشغيل المسجّلة سابقًا. ويتم تعريف smooth بأنّها صحيحة عندما تكون النسبة المئوية لللقطات التي تم إسقاطها أقل من 10%، بينما يكون powerEfficient صحيحًا عندما يتم فك ترميز أكثر من 50% من اللقطات بواسطة الجهاز. تُعد الإطارات الصغيرة دائمًا موفّرة للطاقة.

أوصي باستخدام مقتطف مشابه للمقتطف أدناه لاكتشاف مدى التوفر والعودة إلى التنفيذ الحالي للمتصفّحات التي لا تتوافق مع واجهة برمجة التطبيقات هذه.

function isMediaConfigSupported(mediaConfig) {

  const promise = new Promise((resolve, reject) => {
    if (!('mediaCapabilities' in navigator)) {
      return reject('MediaCapabilities API not available');
    }
    if (!('decodingInfo' in navigator.mediaCapabilities)) {
      return reject('Decoding Info not available');
    }
    return resolve(navigator.mediaCapabilities.decodingInfo(mediaConfig));
  });

  return promise.catch(_ => {
    let fallbackResult = {
      supported: false,
      smooth: false, // always false
      powerEfficient: false // always false
    };
    if ('video' in mediaConfig) {
      fallbackResult.supported = MediaSource.isTypeSupported(mediaConfig.video.contentType);
      if (!fallbackResult.supported) {
        return fallbackResult;
      }
    }
    if ('audio' in mediaConfig) {
      fallbackResult.supported = MediaSource.isTypeSupported(mediaConfig.audio.contentType);
    }
    return fallbackResult;
  });
}

متاحة لمرحلة التجربة والتقييم

سعيًا إلى الحصول على أكبر قدر ممكن من الملاحظات من المطوّرين الذين يستخدمون واجهة برمجة التطبيقات Decode Info API (جزء من إمكانات الوسائط) في هذا المجال، أضفنا هذه الميزة سابقًا في الإصدار Chrome 64 كتجربة أصلية.

انتهت الفترة التجريبية بنجاح في نيسان (أبريل) 2018.

الرغبة في إجراء التجربة | هدف الشحن | أداة تتبّع حالة Chrome | خطأ في Chromium

تشغيل الفيديو بنطاق عالي الديناميكية على نظام التشغيل Windows 10

تتميّز الفيديوهات بنطاق عالي الديناميكية (HDR) بتباين أعلى، ما يكشف عن ظلال دقيقة ومفصّلة ومعلومات بارزة مذهلة أكثر وضوحًا من أي وقت مضى. علاوة على ذلك، فإن الدعم لسلسلة الألوان الواسعة يعني أن الألوان أكثر حيوية.

مقارنة نطاق SDR التي تمّت محاكاتها بنطاق HDR (يجب توفّر شاشة HDR حقيقية)
مقارنة نطاق HDR تمت محاكته مع النطاق العالي الديناميكية (HDR) (يجب توفّر عرض بنطاق عالي الديناميكية (HDR) فعليّ (يجب توفّر عرض بنطاق HDR)

بما أنّ تشغيل VP9 Profile 2 بتنسيق 10 بت متوافق الآن مع متصفّح Chrome لنظام التشغيل Windows 10 Fall (تحديث صانع المحتوى)، يتيح Chrome أيضًا تشغيل الفيديوهات بنطاق عالي الديناميكية عندما يكون نظام التشغيل Windows 10 في وضع النطاق العالي الديناميكية (HDR). من الناحية الفنية، يتوافق Chrome 64 الآن مع ملف تعريف الألوان scRGB الذي يتيح بدوره تشغيل الوسائط في النطاق العالي الديناميكية (HDR).

جرّب الفيديو من خلال مشاهدة فيديو The World in HDR (ULTRA HD) على YouTube، والتحقق من أنّه يشغّل النطاق العالي الديناميكية (HDR) من خلال مراجعة إعدادات الجودة في مشغّل YouTube.

إعدادات الجودة في مشغّل YouTube مع عرض نطاق عالي الديناميكية (HDR)
إعداد جودة مشغّل YouTube مع عرض نطاق عالي الديناميكية (HDR)

كل ما تحتاج إليه الآن هو Windows 10 Fall Creator Update، وبطاقة رسومات وشاشة رسومات متوافقة مع النطاق العالي الديناميكية (على سبيل المثال، بطاقة NVIDIA 10-series أو تلفزيون أو شاشة LG HDR)، وتفعيل وضع النطاق العالي الديناميكية (HDR) في إعدادات عرض نظام التشغيل Windows.

يمكن لمطوّري البرامج على الويب اكتشاف نطاق الألوان التقريبي الذي يتيحه جهاز الإخراج باستخدام طلب البحث عن الوسائط الأخير في color-gamut وعدد وحدات البت المستخدمة لعرض لون على الشاشة باستخدام screen.colorDepth. إليك طريقة واحدة لاستخدام هذه الإعدادات لاكتشاف ما إذا كان VP9 HDR متوافقًا على سبيل المثال:

// Detect if display is in HDR mode and if browser supports VP9 HDR.
function canPlayVp9Hdr() {

  // TODO: Adjust VP9 codec string based on your video encoding properties.
  return (window.matchMedia('(color-gamut: p3)').matches &&
      screen.colorDepth >= 48 &&
      MediaSource.isTypeSupported('video/webm; codecs="vp09.02.10.10.01.09.16.09.01"'))
}

إنّ سلسلة برنامج ترميز VP9 مع الملف الشخصي 2 التي تم تمريرها إلى isTypeSupported() في المثال أعلاه يجب تعديلها استنادًا إلى خصائص ترميز الفيديو.

يُرجى العِلم بأنّه لا يمكن بعد تحديد ألوان النطاق العالي الديناميكية في CSS ولوحة الرسم والصور والمحتوى المحمي. ويعمل فريق Chrome على حلّ هذه المشكلة. يُرجى متابعة أخبارنا باستمرار.

التراخيص الدائمة لنظامي التشغيل Windows وMac

يعني الترخيص الدائم في إضافات الوسائط المشفرة (EME) أنه يمكن استمرار الترخيص على الجهاز بحيث يمكن للتطبيقات تحميل الترخيص في الذاكرة بدون إرسال طلب ترخيص آخر إلى الخادم. هذه هي طريقة إتاحة التشغيل بلا إنترنت في EME.

حتى الآن، كان كل من ChromeOS وAndroid المنصّتين الوحيدتين اللتين تدعمان التراخيص الدائمة. لم يعد الأمر صحيحًا بعد الآن. يمكن الآن تشغيل المحتوى المحمي من خلال EME عندما يكون الجهاز غير متصل بالإنترنت في Chrome 64 على نظامي التشغيل Windows وMac أيضًا.

const config = [{
  sessionTypes: ['persistent-license'],
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'SW_SECURE_DECODE' // Widevine L3
  }]
}];

navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content while being offline when
  // license is stored locally on device and loaded later.
})
.catch(error => {
  // Persistent licenses are not supported on this platform yet.
});

يمكنك تجربة التراخيص الدائمة بنفسك من خلال الاطّلاع على نموذج PWA للوسائط، واتّباع الخطوات التالية:

  1. انتقِل إلى https://biograf-155113.appspot.com/ttt/episode-2/
  2. النقر على "الإتاحة بلا اتصال بالإنترنت" وانتظار تنزيل الفيديو
  3. أوقِف الاتصال بالإنترنت.
  4. انقر على الزر "تشغيل" واستمتع بالفيديو!

يتم ضبط الإعداد التلقائي للتحميل المُسبق للوسائط على "البيانات الوصفية".

عند مطابقة عمليات التنفيذ في المتصفّحات الأخرى، يضبط متصفّح Chrome لسطح المكتب الآن قيمة التحميل المسبق التلقائية للعناصر <video> و<audio> على "metadata" لتقليل معدّل نقل البيانات واستخدام الموارد. بدءًا من إصدار 64 من Chrome، لن يسري هذا السلوك الجديد إلا على الحالات التي لا يتم فيها ضبط أي قيمة للتحميل المُسبق. يُرجى العِلم أنّه يتم تجاهل تلميح سمة التحميل المُسبق عند إرفاق MediaSource بعنصر الوسائط، لأنّ الموقع الإلكتروني يعالج عملية التحميل المُسبق الخاصة به.

بمعنى آخر، أصبحت قيمة التحميل المُسبق <video> الآن "metadata"، بينما تظل قيمة التحميل المُسبق <video preload="auto"> "auto". حاوِل استخدام العيّنة الرسمية.

هدف الشحن | أداة تتبّع حالة Chrome | خطأ Chromium

تُرفع نسبة التشغيل غير المتوافقة استثناءً

بعد تغيير مواصفات HTML، عند ضبط playbackRate لعناصر الوسائط على قيمة لا يتيحها Chrome (على سبيل المثال، قيمة سالبة)، يتم عرض DOMException "NotSupportedError" في Chrome 63.

const audio = document.querySelector('audio');
try {
  audio.playbackRate = -1;
} catch(error) {
  console.log(error.message); // Failed to set the playbackRate property
}

بِالْمُنَاسَبَة، يَسْتَطِيعْ التَّنْفِيذُ الْحَالِي لِأَجْهِزَةِ Chrome هذَا الاستثناء عندما تكون قيمة playbackRate سالبة أو أقل من 0.0625 أو أكثر من 16. جرب النموذج الرسمي للاطّلاع على هذا عمليًا.

هدف الشحن | أداة تتبّع حالة Chrome | خطأ Chromium

تحسينات على مقاطع الفيديو في الخلفية

يسعى فريق Chrome دائمًا إلى العثور على طرق جديدة لتحسين عمر البطارية ولم يكن الإصدار 63 من Chrome استثناءً من ذلك.

وإذا كان الفيديو لا يتضمّن أي مقاطع صوتية، سيتم إيقافه مؤقتًا تلقائيًا عند تشغيله في الخلفية (على سبيل المثال في علامة تبويب غير مرئية) على كمبيوتر Chrome المكتبي (في أنظمة التشغيل Windows وMac وLinux وChromeOS). هذه متابعة لتأثير تغيير مشابه كان يسري فقط على الفيديوهات التي تتضمّن الخطأ التربيعي المتوسط في الإصدار 62 من Chrome.

خطأ Chromium

إزالة كتم الصوت بسبب معدلات التشغيل القصوى

قبل استخدام Chrome 64، كان يتم كتم الصوت عندما كانت قيمة playbackRate أقل من 0.5 أو أعلى من 4 بسبب انخفاض مستوى الجودة بشكل كبير. نظرًا لتحول Chrome إلى أسلوب إضافة "مشابه - التشابه الموجي" (WSOLA) لتقليل الجودة، أصبح لا حاجة إلى كتم الصوت بعد الآن. هذا يعني أنه يمكنك تشغيل الصوت ببطء شديد وبسرعة فائقة الآن.

خطأ Chromium