به روز رسانی رسانه در کروم 62

فرانسوا بوفور
François Beaufort

مجوزهای دائمی برای اندروید

مجوز دائمی در برنامه‌های افزودنی رسانه رمزگذاری‌شده (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.
});

می‌توانید با بررسی Sample Media PWA و دنبال کردن این مراحل، مجوزهای دائمی را امتحان کنید:

  1. به https://biograf-155113.appspot.com/ttt/episode-2/ بروید
  2. روی «در دسترس قرار دادن آفلاین» کلیک کنید و منتظر بمانید تا ویدیو دانلود شود.
  3. حالت هواپیما را روشن کنید
  4. روی دکمه "پخش" کلیک کنید و از ویدیو لذت ببرید!

Widevine L1 برای اندروید

همانطور که قبلاً می دانید، همه دستگاه های اندرویدی باید از Widevine امنیت سطح 3 (Widevine L3) پشتیبانی کنند. با این حال دستگاه‌های زیادی وجود دارند که بالاترین سطح امنیتی را نیز پشتیبانی می‌کنند: سطح امنیت Widevine 1 که در آن تمام پردازش محتوا، رمزنگاری و کنترل در محیط اجرای مورد اعتماد (TEE) انجام می‌شود.

خبر خوب! Widevine L1 اکنون در Chrome for 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 ، کتابخانه جاوا اسکریپت برای قالب‌های رسانه تطبیقی ​​(مانند DASH و HLS) یک نسخه نمایشی دارد که می‌توانید Widevine L1 را امتحان کنید:

  1. به https://shaka-player-demo.appspot.com/demo/ بروید و وقتی از شما خواسته شد روی «Allow» کلیک کنید.
  2. "Angel One (چند کد، چند زبانه، Widevine)" را انتخاب کنید.
  3. HW_SECURE_ALL در قسمت «استحکام ویدیو» در بخش «پیکربندی» وارد کنید.
  4. روی دکمه "بارگیری" کلیک کنید و از ویدیو لذت ببرید!

بهینه‌سازی آهنگ‌های ویدیوی پس‌زمینه (فقط MSE)

تیم Chrome همیشه در تلاش است تا راه‌های جدیدی برای بهبود عمر باتری بیابد و Chrome 62 نیز از این قاعده مستثنی نیست.

اگر ویدیو از برنامه‌های افزودنی منبع رسانه (MSE) استفاده می‌کند، Chrome اکنون هنگام پخش ویدیو در پس‌زمینه (مثلاً در یک برگه غیرقابل مشاهده) آهنگ‌های ویدیو را غیرفعال می‌کند. برای کسب اطلاعات بیشتر ، مقاله قبلی ما را بررسی کنید.

محدوده قابل جستجو را در جریان‌های زنده 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 چگونه واکنش نشان می‌دهند.

قصد حمل | ردیاب Chromestatus | اشکال کروم

FLAC در MP4 برای MSE

فرمت کدگذاری صوتی بدون افت FLAC از Chrome 56 در پخش معمولی رسانه پشتیبانی می‌شود. FLAC در پشتیبانی ISO-BMFF (معروف به FLAC در MP4) اندکی بعد اضافه شد. و اکنون FLAC در MP4 در Chrome 62 برای برنامه‌های افزودنی منبع رسانه (MSE) در دسترس است.

برای اطلاعات، دوستان فایرفاکس کسانی هستند که پشتیبانی از FLAC در مشخصات محصورسازی MP4 را توسعه داده و پیاده‌سازی کرده‌اند، و بی‌بی‌سی با استفاده از آن با MSE آزمایش کرده است. برای کسب اطلاعات بیشتر می توانید پست "ارائه صدای کنسرت رادیو 3" بی بی سی را بخوانید.

در اینجا نحوه تشخیص اینکه آیا FLAC در MP4 برای MSE پشتیبانی می شود، آمده است:

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

اگر می‌خواهید یک نمونه کامل را ببینید، نمونه رسمی ما را بررسی کنید.

قصد حمل | ردیاب Chromestatus | اشکال کروم

هنگامی که دستگاه چرخانده می شود، ویدیوی خودکار به حالت تمام صفحه می رود

اگر در حین پخش ویدیو در پنجره دید، دستگاه را به حالت افقی بچرخانید، پخش به طور خودکار به حالت تمام صفحه تغییر می کند. چرخاندن دستگاه به حالت عمودی، ویدیو را به حالت پنجره بازمی‌گرداند. برای جزئیات بیشتر مقاله گذشته ما را بررسی کنید.