Chrome 58 中的媒体更新

François Beaufort
François Beaufort

媒体控件自定义

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

Chrome 58 中的原生媒体控件
Chrome 58 中的原生媒体控件

此 API 提供了一种方法,可显示或隐藏不合逻辑、不属于预期用户体验或仅允许使用一组有限功能的原生媒体控件。

目前的实现是原生控件上的屏蔽名单机制,能够使用新属性 controlsList 直接从 HTML 内容中进行设置。请查看官方示例

在 HTML 中的用法:

<video controls controlsList="nofullscreen nodownload noremoteplay><back&q>uot;/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 跟踪器 | Chromium bug

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

以前,Chrome 会在 Android 设备上例外地屏蔽所有带声音的 autoplay。现在,情况不再如此。从现在起,使用改进后的“添加到主屏幕”流程安装的网站将可以不受限制地自动播放通过网站应用清单范围中包含的来源提供的音频和视频。

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

由于 /foo 在范围内,因此音频将自动播放。

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

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

发货意向 | Chromestatus 跟踪器 | Chromium bug

不可见时暂停自动播放静音视频

您可能已经知道,Android 版 Chrome 允许在无需用户互动的情况下播放 muted 视频。如果视频标记为 muted 且具有 autoplay 属性,则 Chrome 会在该视频对用户可见时开始播放。

从 Chrome 58 开始,为了降低功耗,具有 autoplay 属性的视频在退出屏幕时将暂停播放,返回屏幕时将继续播放,遵循 Safari iOS 行为。'

发货意向 | Chromestatus 跟踪器 | Chromium bug

color-gamut 媒体查询

随着广色域屏幕越来越受欢迎,网站现在可以使用 color-gamut 媒体查询来获取 Chrome 和输出设备支持的颜色的大致范围。

如果您还不熟悉颜色空间、颜色配置文件、色域、广色域和色深的定义,强烈建议您阅读 WebKit 博文 Improving Color on the Web(改进 Web 上的颜色)。其中详细介绍了如何在用户使用宽色域显示屏时使用 color-gamut 媒体查询来提供宽色域图片,在用户使用其他显示屏时则回退到 sRGB 图片。

Chrome 中的当前实现接受 srgbp3(由 DCI P3 色彩空间指定的色域)和 rec2020(由 ITU-R 建议 BT.2020 色彩空间指定的色域)关键字。请查看官方示例

在 HTML 中的用法:

<picture>
  <source media="(color-gamut: p3)" srcset=&quo>t;p<hoto-p3.jpg"
  source media="(color-gamut: rec2020)&qu>ot;< srcset="photo-rec2>0<20.jpg&q>uot;
  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 跟踪器 | Chromium bug