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

François Beaufort
François Beaufort

Media Capabilities - Decoding Info API

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

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

في ما يلي آلية عمل واجهة برمجة التطبيقات Decoding 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;
  });
}

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

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

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

Intent to Experiment | Intent to Ship | Chromestatus Tracker | Chromium Bug

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

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

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

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

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

إعدادات جودة مشغّل YouTube التي تتضمّن ميزة HDR
إعداد جودة مشغّل YouTube الذي يعرض الفيديوهات بنطاق عالي الديناميكية

كل ما تحتاجه الآن هو تحديث Fall Creators Update لنظام التشغيل Windows 10، وبطاقة رسومات وشاشة متوافقةَين مع تقنية HDR (مثل بطاقة سلسلة NVIDIA 10 أو تلفزيون أو شاشة 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() في المثال أعلاه، وذلك استنادًا إلى خصائص ترميز الفيديو.

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

التراخيص الثابتة لنظامَي التشغيل Windows وMac

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

حتى الآن، كان نظاما التشغيل ChromeOS وAndroid هما النظامان الأساسيان الوحيدان اللذان يتيحان استخدام رخص المحتوى الدائمة. لم يعُد ذلك صحيحًا. أصبح بإمكانك الآن تشغيل المحتوى المحمي من خلال إدارة الحقوق الرقمية للمحتوى المحمي (EME) عندما يكون الجهاز غير متصل بالإنترنت في الإصدار 64 من Chrome على نظامَي التشغيل 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". يمكنك تجربة النموذج الرسمي.

Intent to Ship | Chromestatus Tracker | Chromium Bug

يتسبب playbackRate غير المتوافق في حدوث استثناء

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

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. يمكنك تجربة العينة الرسمية للاطّلاع على هذه الأعمال.

Intent to Ship | Chromestatus Tracker | Chromium Bug

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

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

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

خطأ Chromium

إزالة كتم الصوت لمعدلات التشغيل العالية جدًا

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

خطأ Chromium