تحديثات الوسائط في Chrome 62

François Beaufort
François Beaufort

التراخيص الثابتة لنظام التشغيل Android

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

حتى الآن، كان نظام التشغيل ChromeOS هو النظام الأساسي الوحيد الذي يتيح التراخيص الدائمة. ولم يعُد هذا صحيحًا. أصبح تشغيل المحتوى المحمي عبر EME عندما يكون الجهاز غير متصل بالإنترنت ممكنًا الآن على Android أيضًا.

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

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
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. انقر على الزر "تشغيل" واستمتع بالفيديو!

Widevine L1 لنظام التشغيل Android

كما تعلم، يجب أن تكون جميع أجهزة Android متوافقة مع Widevine المستوى 3 من الأمان (Widevine L3). ومع ذلك، هناك العديد من الأجهزة التي توفّر أيضًا أعلى مستوى من الأمان: مستوى أمان Widevine‏ 1 الذي يتم فيه تنفيذ جميع عمليات معالجة المحتوى والتشفير والتحكّم ضمن بيئة التنفيذ الموثوق بها (TEE).

لدينا أخبار سارّة لك. إنّ جهاز Widevine L1 متوافق الآن مع متصفِّح Chrome لنظام التشغيل Android ليتمكّن من تشغيل الوسائط بالطريقة الأكثر أمانًا. يُرجى العِلم أنّ هذه السياسة كانت متوافقة مع نظام التشغيل Chrome.

const config = [{
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'HW_SECURE_ALL' // Widevine L1
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
  // Widevine L1 is not supported on this platform yet.
});

Shaka Player، مكتبة JavaScript لتنسيقات الوسائط التكيُّفية (مثل DASH وHLS) تتضمّن عرضًا تجريبيًا لتجربة Widevine L1:

  1. انتقِل إلى https://shaka-player-demo.appspot.com/demo/ وانقر على "السماح" عندما يُطلب منك ذلك.
  2. اختَر Angel One (متعدّد الترميزات ومتعدّد اللغات وWidevine).
  3. أدخِل HW_SECURE_ALL في حقل "صلابة الفيديو" ضمن قسم "الإعداد" .
  4. انقر على الزر "تحميل" واستمتع بمشاهدة الفيديو!

تحسينات على مقاطع الفيديو التي يتم تشغيلها في الخلفية (MSE فقط)

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

يوقف Chrome الآن مقاطع الفيديو عند تشغيل الفيديو في الخلفية (على سبيل المثال، في علامة تبويب غير مرئية) إذا كان الفيديو يستخدم إضافات مصدر الوسائط (MSE). يمكنك الاطّلاع على مقالتنا السابقة لمعرفة المزيد.

تخصيص النطاق الذي يمكن التقديم أو الإيقاف فيه في أحداث البث المباشر باستخدام MSE

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

والخبر السارّ هو أنّه يمكنك الآن تخصيص منطق النطاق seekable بفعالية أكبر باستخدام إضافات مصدر الوسائط (MSE) من خلال توفير نطاق واحد قابل للتقديم أو الإيقاف يتم دمجه مع النطاقات التي تم تخزينها مؤقتًا في الوقت الحالي أو إزالته. ويؤدي ذلك إلى إنشاء نطاق واحد قابل للتقديم أو الإيقاف يناسب كلاهما، عندما تكون مدّة مصدر الوسائط هي +Infinity.

في الرمز البرمجي أدناه، تم إرفاق مصدر الوسائط بالفعل بعنصر وسائط ولا يحتوي إلا على مقطع البدء الخاص به:

const mediaSource = new MediaSource();
...

mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }

mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }

// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

هناك العديد من الحالات التي لم أتطرق إليها أعلاه، لذا نقترح عليك تجربة النموذج الرسمي لمعرفة كيفية تفاعل النطاقات الزمنية التي يمكن تخزينها مؤقتًا والرجوع إليها مع أحداث MSE المختلفة.

Intent to Ship | Chromestatus Tracker | Chromium Bug

تنسيق FLAC بتنسيق MP4 للخطأ MSE

أصبح تنسيق ترميز الصوت بدون فقدان البيانات FLAC متوافقًا مع تشغيل الوسائط العادي منذ الإصدار 56 من Chrome. تمت إضافة تنسيق FLAC في ISO-BMFF (المعروف أيضًا باسم FLAC في MP4) بعد ذلك بوقت قصير. والآن، أصبح تنسيق FLAC في MP4 متاحًا في الإصدار 62 من Chrome لإضافات مصدر الوسائط (MSE).

بالنسبة إلى المستخدمين في Firefox، نجحوا في تطوير مواصفات تغليف FLAC بتنسيق MP4 وتطبيقها، وكانت هيئة الإذاعة البريطانية (BBC) تجرّب استخدام ذلك مع الخطأ التربيعي المتوسط. للمزيد من المعلومات، يمكنك قراءة مشاركة "Delivering Radio 3 Concert Sound" على BBC.

في ما يلي كيفية اكتشاف ما إذا كان تنسيق FLAC بتنسيق MP4 متوافقًا مع الخطأ التربيعي المتوسط:

if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
  // TODO: Fetch data and feed it to a media source.
}

للاطّلاع على مثال كامل، يمكنك الاطّلاع على نموذجنا الرسمي.

نية الشحن | أداة تتبُّع Chromestatus | خطأ Chromium

عرض الفيديو تلقائيًا بملء الشاشة عند تدوير الجهاز

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