- Web 开发者可以控制视频的画中画功能。
- Chrome 桌面版 x86-64 现在支持 AV1 解码器。
- 在 MSE 中,可以实现跨编解码器和跨字节流的缓冲和播放。
- Chrome 现在支持 MP4 中的 Opus(使用 MSE)。
- 在 Android 上,受保护的内容播放默认处于允许状态。
使用画中画功能观看视频
借助画中画 (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。
支持在 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 和网站数据,从而确保网站不会使用媒体许可来跟踪已清除浏览数据的用户。