به‌روزرسانی‌های رسانه در Chrome 63/64

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

قابلیت های رسانه - API اطلاعات رمزگشایی

امروزه، توسعه دهندگان وب به isTypeSupported() یا canPlayType() تکیه می کنند تا به طور مبهم بدانند که آیا برخی از رسانه ها قابل رمزگشایی هستند یا خیر. اما سوال واقعی باید این باشد: "چقدر روی این دستگاه عملکرد خوبی دارد؟"

این دقیقاً یکی از مواردی است که Media Capabilities پیشنهادی می‌خواهد حل کند: یک API برای پرس و جو از مرورگر در مورد توانایی‌های رمزگشایی دستگاه بر اساس اطلاعاتی مانند کدک‌ها، نمایه، وضوح، میزان بیت و غیره. اطلاعاتی از قبیل آیا پخش باید بر اساس آمار پخش قبلی ثبت شده توسط مرورگر، روان و کارآمد باشد.

به طور خلاصه، در اینجا نحوه عملکرد 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 ) را پیدا کنید و از آن برای پخش جریان رسانه مناسب استفاده کنید. به هر حال، پیاده سازی فعلی کروم بر اساس اطلاعات پخش قبلی ضبط شده است. زمانی که درصد فریم‌های افت شده کمتر از 10 درصد باشد، smooth درست تعریف می‌کند، در حالی که وقتی بیش از 50 درصد فریم‌ها توسط سخت‌افزار رمزگشایی می‌شوند، powerEfficient درست است. قاب‌های کوچک همیشه به‌عنوان کارآمد در نظر گرفته می‌شوند.

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

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;
  });
}

برای آزمایشات منشا موجود است

به منظور دریافت هرچه بیشتر بازخورد از برنامه‌نویسانی که از API اطلاعات رمزگشایی (بخشی از قابلیت‌های رسانه) در این زمینه استفاده می‌کنند، قبلاً این ویژگی را در Chrome 64 به‌عنوان نسخه آزمایشی اصلی اضافه کرده‌ایم.

این آزمایش در آوریل 2018 با موفقیت به پایان رسید.

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

پخش فیلم HDR در ویندوز 10

ویدیوهای محدوده دینامیکی بالا (HDR) کنتراست بالاتری دارند، سایه‌های دقیق و دقیق و هایلایت‌های خیره‌کننده را با وضوح بیشتر از همیشه نشان می‌دهند. علاوه بر این، پشتیبانی از طیف رنگی گسترده به این معنی است که رنگ ها زنده تر هستند.

مقایسه SDR و HDR شبیه سازی شده (دیدن HDR واقعی نیاز به نمایشگر HDR دارد)
مقایسه SDR و HDR شبیه سازی شده (دیدن HDR واقعی نیاز به نمایشگر HDR دارد)

از آنجایی که پخش 10 بیتی VP9 Profile 2 اکنون در Chrome for Windows 10 Fall Creator Update پشتیبانی می‌شود، Chrome همچنین از پخش ویدیوی HDR زمانی که ویندوز 10 در حالت HDR است پشتیبانی می‌کند. در یک نکته فنی، Chrome 64 اکنون از نمایه رنگی scRGB پشتیبانی می کند که به نوبه خود امکان پخش رسانه ها را در HDR فراهم می کند.

می‌توانید با تماشای The World در HDR در 4K (ULTRA HD) در YouTube آن را امتحان کنید و با مشاهده تنظیمات کیفیت پخش‌کننده YouTube بررسی کنید که HDR پخش می‌کند.

تنظیم کیفیت پخش کننده YouTube دارای HDR
تنظیم کیفیت پخش کننده YouTube دارای HDR

تنها چیزی که در حال حاضر نیاز دارید Windows 10 Fall Creator Update است، یک کارت گرافیک و نمایشگر سازگار با HDR (مثلاً کارت سری 10 NVIDIA، تلویزیون یا مانیتور LG HDR)، و حالت HDR را در تنظیمات صفحه نمایش ویندوز روشن کنید.

توسعه دهندگان وب می توانند وسعت رنگ تقریبی پشتیبانی شده توسط دستگاه خروجی را با جستجوی رسانه رنگ-گستره اخیر و تعداد بیت های استفاده شده برای نمایش یک رنگ روی صفحه با 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 با Profile 2 که در مثال بالا به isTypeSupported() منتقل شده است باید بر اساس ویژگی‌های رمزگذاری ویدیوی شما به‌روزرسانی شود.

توجه داشته باشید که هنوز امکان تعریف رنگ های HDR در CSS , بوم , تصاویر و محتوای محافظت شده وجود ندارد . تیم Chrome روی آن کار می کند. در جریان باشید!

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

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

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

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

پیش‌بارگذاری رسانه روی «فراداده» پیش‌فرض است

دسک‌تاپ Chrome با تطبیق اجرای سایر مرورگرها، اکنون مقدار پیش‌بارگذاری پیش‌فرض عناصر <video> و <audio> را به منظور کاهش پهنای باند و استفاده از منابع، روی "metadata" تنظیم می‌کند. از Chrome 64، این رفتار جدید فقط در مواردی اعمال می‌شود که مقدار پیش‌بارگذاری تنظیم نشده باشد. توجه داشته باشید که هنگامی که یک MediaSource به عنصر رسانه متصل می شود، اشاره ویژگی preload نادیده گرفته می شود زیرا وب سایت پیش بارگذاری خود را مدیریت می کند.

به عبارت دیگر، مقدار پیش‌بارگذاری <video> اکنون "metadata" است در حالی که مقدار <video preload="auto"> "auto" باقی می‌ماند. نمونه رسمی را امتحان کنید.

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

نرخ پخش پشتیبانی نشده یک استثنا را ایجاد می کند

پس از تغییر مشخصات 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 باشد، افزایش می‌دهد. نمونه رسمی را امتحان کنید تا آن را در عمل ببینید.

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

بهینه سازی آهنگ های ویدئویی پس زمینه

تیم کروم همیشه در تلاش است تا راه های جدیدی برای بهبود عمر باتری بیابد و کروم 63 نیز از این قاعده مستثنی نبود.

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

اشکال کروم

حذف نادیده گرفتن برای نرخ پخش شدید

قبل از Chrome 64، هنگامی که playbackRate زیر 0.5 یا بالاتر از 4 بود، صدا خاموش می شد زیرا کیفیت به طور قابل توجهی کاهش می یافت. از آنجایی که Chrome برای کاهش کیفیت به رویکرد Waveform-Similarity-Overlap-Add (WSOLA) روی آورده است، صدا دیگر نیازی به بی‌صدا شدن ندارد. این بدان معناست که اکنون می توانید صدا را بسیار آهسته و فوق العاده سریع پخش کنید.

اشکال کروم