Chrome 70 中的媒体更新

François Beaufort
François Beaufort

使用画中画功能观看视频

借助画中画 (PiP) 功能,用户可以在浮动窗口(始终位于其他窗口上方)中观看视频,这样一来,他们就可以在与其他网站或应用互动时,随时关注自己正在观看的内容。借助新的画中画 Web API,您可以为您的网站启动和控制视频的画中画功能。

如需了解详情,请参阅这篇文章

AV1 解码器

AV1 是由开放媒体联盟开发的下一代编解码器。与目前最先进的视频编解码器 VP9 相比,AV1 将压缩效率提高了 30%以上。Chrome 70 基于官方比特流规范,向 Chrome 桌面版 x86-64 添加了 AV1 解码器。目前,仅支持“主要”配置文件 0,不包括编码功能。支持的容器是 MP4 (ISO-BMFF)(如需简要了解容器,请参阅容器和编解码器)。

如需试用 AV1,请执行以下操作:

  1. 前往 YouTube TestTube 页面
  2. 选择“Prefer AV1 for SD”(首选 AV1)或“Always Prefer AV1”,以获得所需的 AV1 分辨率。请注意,在更高的分辨率下,AV1 在某些设备上更有可能遇到播放性能问题。
  3. 尝试播放 AV1 Beta 版启动播放列表中的 YouTube 剪辑。
  4. 在“详细统计信息”中确认编解码器 av01。
在 YouTube 中显示 AV1 的“详细统计信息”
适合极客的统计信息:YouTube 中的 AV1。

支持在 MSE 中进行编解码器和容器切换

Chrome 将添加相关支持,以便使用 SourceBuffer 上的新 changeType() 方法改进 Media Source Extensions 播放中的跨编解码器或跨字节流转换。它允许在之后更改附加到 SourceBuffer 的媒体字节的类型。

当前版本的 MSE 支持媒体的自适应播放;不过,自适应播放要求附加到 SourceBuffer 的任何媒体都必须符合通过 MediaSource.addSourceBuffer(type) 初始创建 SourceBuffer 时提供的 MIME 类型。该类型的编解码器以及之前解析的任何初始化片段在整个过程中都必须保持不变。这意味着,网站必须采取明确的步骤来实现编解码器或字节流切换(通过使用多个媒体元素或 SourceBuffer 轨道并在这些轨道之间切换),这会增加应用复杂性和用户可见的延迟时间。(此类转换需要 Web 应用在渲染程序主线程上执行同步操作)。这种过渡延迟会影响媒体在过渡期间的流畅播放。

借助新的 changeType() 方法,SourceBuffer 可以缓冲并支持在不同的字节流格式和编解码器之间进行播放。这种新方法可保留之前缓冲的媒体、对未来 MSE 编码帧进行逐出或移除,并利用现有 MSE 编码帧处理算法中的拼接和缓冲逻辑。

changeType() 方法的使用方法如下:

const sourceBuffer = myMediaSource.addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
sourceBuffer.appendBuffer(someWebmOpusVP9Data);

// Later on...
if ('changeType' in sourceBuffer) {
  // Change source buffer type and append new data.
  sourceBuffer.changeType('video/mp4; codecs="mp4a.40.5, avc1.4d001e"');
  sourceBuffer.appendBuffer(someMp4AacAvcData);
}

与预期一样,如果浏览器不支持传递的类型,此方法会抛出 NotSupportedError 异常。

查看示例,了解如何对音频元素进行跨编解码器和跨字节流缓冲和播放。

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

适用于 MSE 的 MP4 中的 Opus

从 Chrome 33 开始,<audio><video> 元素支持开放且高度通用的音频编解码器 Opus。之后添加了 ISO-BMFF 中的 Opus 支持(也称为 MP4 中的 Opus)。现在,Media Source Extensions 可在 Chrome 70 中使用 MP4 中的 Opus。

您可以通过以下方式检测 MSE 是否支持 MP4 中的 Opus:

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

如需查看完整示例,请参阅我们的官方示例

由于缺少用于在 MP4 中使用正确的结束剪裁和预跳值对 Opus 进行多路复用(mux)的工具,如果这种精确度对您来说很重要,您需要在 Chrome 中使用 SourceBuffer.appendWindow{Start,End}SourceBuffer.timestampOffset 来实现精确到采样的播放。

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

默认允许在 Android 设备上播放受保护内容

在适用于 Android 的 Chrome 70 中,“受保护内容”网站设置的默认值已从“先询问”更改为“允许”,从而降低了与此类媒体的播放相关的摩擦。之所以能够实现这一变化,部分原因在于我们采取了额外的措施来清除媒体许可以及 Cookie 和网站数据,确保网站不会使用媒体许可来跟踪已清除浏览数据的用户。

ALT_TEXT_HERE
Android 中的受保护内容设置。