Chrome 70 中的音频/视频更新

François Beaufort
François Beaufort

使用画中画功能观看视频

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

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

AV1 解码器

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

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

  • 前往 YouTube TestTube 页面
  • 选择“标清视频首选 AV1”或“始终首选 AV1”,以获得所需的 AV1 分辨率。请注意,在较高分辨率下,AV1 在某些设备上更可能出现播放性能问题。
  • 尝试播放 AV1 Beta Launch Playlist 中的 YouTube 短片。
  • 在“详细统计信息”中确认编解码器 av01。
YouTube 中包含 AV1 的“详细统计信息”。
图 1. YouTube 中包含 AV1 的“详细统计信息”。

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

Chrome 正在添加支持,以便在 Media Source Extensions 播放中使用 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 跟踪器 | Chromium bug

适用于 MSE 的 MP4 中的 Opus

自 Chrome 33 起,开放且高度通用的音频编解码器 Opus 已在 <audio><video> 元素中得到支持。之后添加了对 ISO-BMFF 中的 Opus(也称为 MP4 中的 Opus)的支持。现在,Chrome 70 中已针对 Media Source Extensions 提供 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 跟踪器 | Chromium bug

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

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

Android 中的受保护内容设置。
图 2. Android 中的受保护内容设置。