Chrome 58 中的媒体更新

François Beaufort
François Beaufort

媒体控件自定义

开发者现在可以自定义 Chrome 的原生媒体控件,例如 下载、全屏和 remoteplayback 按钮(使用新的 ControlsList API)实现。

<ph type="x-smartling-placeholder">
</ph> Chrome 58 中的原生媒体控件 <ph type="x-smartling-placeholder">
</ph> Chrome 58 中的原生媒体控件

此 API 提供了一种用于显示或隐藏原生媒体控件的方法,这些控件不会使 符合预期的用户体验或不属于预期用户体验的范畴,或者仅允许 一组有限的功能。

目前,针对原生控件的屏蔽名单机制 可以使用新的 属性 controlsList。查看官方示例

HTML 中的用法:

<video controls controlsList="nofullscreen nodownload noremoteplayback"></video>

在 JavaScript 中的用法:

var video = document.querySelector('video');
video.controls; // true
video.controlsList; // ["nofullscreen", "nodownload", "noremoteplayback"]
video.controlsList.remove('noremoteplayback');
video.controlsList; // ["nofullscreen", "nodownload"]
video.getAttribute('controlsList'); // "nofullscreen nodownload"

video.controlsList.supports('foo'); // false
video.controlsList.supports('noremoteplayback'); // true

打算发货 | Chromestatus Tracker | Chromium bug

已将渐进式 Web 应用的自动播放功能添加到主屏幕

以前,在 Android 上,Chrome 会屏蔽所有有声的autoplay 异常。如今,情况不再如此。从现在起,使用 经过改进的“添加到主屏幕”流程可以自动播放音频和视频 由包含在 Web 应用清单范围中的来源提供,但不 限制。

{
  "name": "My Web App",
  "description": "An awesome app",
  "scope": "/foo",
  ...
}
正确做法
<html>
  <link rel="canonical" href="https://example.com/foo">
  <audio autoplay src="https://cdn.com/file.mp4"></audio>
</html>

/foo在范围内时,音频将自动播放。

错误做法
<html>
  <link rel="canonical" href="https://example.com/bar">
  <audio autoplay src="https://cdn.com/file.mp4"></audio>
</html>

由于 /bar 不在范围内,音频无法自动播放。

打算发货 | Chromestatus Tracker | Chromium bug

隐藏后暂停自动播放静音视频

您可能已经知道,Android 版 Chrome 允许开始播放 muted 视频 而无需用户互动如果视频被标记为 mutedautoplay 属性,Chrome 会在视频变为可见时开始播放它 。

从 Chrome 58 开始,为了减少耗电量, autoplay 属性会在屏幕外暂停时暂停,并在重新进入屏幕时恢复 视图,遵循 Safari iOS 行为。”

打算发货 | Chromestatus Tracker | Chromium bug

color-gamut 媒体查询

随着广色域屏幕的日益普及,网站现在可以访问 显示 Chrome 支持的大概颜色范围, color-gamut 媒体查询。

如果您还不熟悉颜色空间、颜色配置文件 色域、广色域和色深,我强烈建议您阅读 Improving Color on the Web WebKit 博文。其中详细介绍了 使用 color-gamut 媒体查询,以便在用户 采用广色域显示屏,否则会回退到 sRGB 图像。

Chrome 中的当前实现接受 srgbp3(指定的色域) 由 DCI P3 Color Space 指定)和 rec2020(ITU-R 规范指定的色域) Recommendation BT.2020 Color Space)的关键字。查看官方示例

HTML 中的用法:

<picture>
  <source media="(color-gamut: p3)" srcset="photo-p3.jpg">
  <source media="(color-gamut: rec2020)" srcset="photo-rec2020.jpg">
  <img src="photo-srgb.jpg">
</picture>

在 CSS 中的用法:

main {
  background-image: url("photo-srgb.jpg");
}

@media (color-gamut: p3) {
  main {
    background-image: url("photo-p3.jpg");
  }
}

@media (color-gamut: rec2020) {
  main {
    background-image: url("photo-rec2020.jpg");
  }
}

在 JavaScript 中的用法:

// It is expected that the majority of color displays will return true.
if (window.matchMedia("(color-gamut: srgb)").matches) {
  document.querySelector('main').style.backgroundImage = 'url("photo-srgb.jpg")';
}

if (window.matchMedia("(color-gamut: p3)").matches) {
  document.querySelector('main').style.backgroundImage = 'url("photo-p3.jpg")';
}

if (window.matchMedia("(color-gamut: rec2020)").matches) {
  document.querySelector('main').style.backgroundImage = 'url("photo-rec2020.jpg")';
}

打算发货 | Chromestatus Tracker | Chromium bug