Chrome 70 中的媒体更新

François Beaufort
François Beaufort

使用“画中画”模式观看视频

借助画中画 (PiP) 功能,用户可以在浮动窗口(始终位于其他窗口之上)观看视频,以便在与其他网站或应用互动时随时关注自己正在观看的视频。借助新的 Picture-in-Picture Web API,您可以为网站上的视频启动和控制画中画。

如需了解详情,请参阅我们的文章

AV1 解码器

AV1 是开放媒体联盟 (Alliance for Open Media) 开发的新一代编解码器。与当前最先进的视频编解码器 VP9 相比,AV1 将压缩效率提高了超过 30%。Chrome 70 根据官方比特流规范向 Chrome Desktop x86-64 添加了 AV1 解码器。目前,仅支持“Main”profile 0,并且不包含编码功能。支持的容器是 MP4 (ISO-BMFF)(如需查看容器的简要说明,请参阅容器和编解码器)。

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

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

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

Chrome 添加了对使用 SourceBuffer 上的新 changeType() 方法在媒体来源扩展程序播放过程中改进的跨编解码器或跨字节流转换的支持。它允许之后更改附加到 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 Tracker | Chromium 错误

用于 MSE 的 MP4 Opus

从 Chrome 33 开始,<audio><video> 元素中就支持开放且用途非常广的音频编解码器 Opus。之后添加了ISO-BMFF 中的 Opus 支持(MP4 中的 Opus)。现在,可在 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 进行多路复用的工具,如果这种精度对您很重要,您将需要在 Chrome 中使用 SourceBuffer.appendWindow{Start,End}SourceBuffer.timestampOffset 才能获得准确采样的播放效果。

发货意向 | Chromestatus Tracker | Chromium 错误

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

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

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