YouTube 如何利用 Media Capabilities API 提升视频性能

确保在所有设备上都能流畅播放视频。

François Beaufort
François Beaufort

在使用 Media Capabilities API 进行的一项实验中,YouTube 的 MTBR 提高了 7.1%,而投放的视频平均分辨率仅下降了 0.4%。

问题

通常,媒体网站会为每个视频提供多个变体,以便向用户呈现,这些变体采用不同的帧速率、分辨率和编解码器进行编码。直到最近,Web 开发者只能依赖 isTypeSupported()canPlayType() 来确定每个变体是否可以在单个用户的浏览器中播放。虽然这可以告知开发者媒体是否可以播放,但并未提供播放质量的指示,例如是否会出现帧丢失或设备电池耗尽。没有这些信息,开发者就必须自行创建启发词语,或者假定如果设备可以播放某个编解码器/分辨率组合,则可以流畅且节能地播放。对于功能较弱的设备用户,这通常会导致体验不佳。

解决方案

借助 Media Capabilities API,网站可以详细了解客户端的视频解码性能,并就向用户提供哪种编解码器和分辨率做出明智的决策。具体而言,该 API 可为开发者估算特定编解码器和分辨率组合的流畅度和功耗效率。这样,开发者就可以避免客户端可能会出现糟糕的播放体验的情况。

在 Chrome 中,Media Capabilities API 会使用之前播放的指标来预测未来使用相同编解码器和相同分辨率进行播放时能否顺利解码。

YouTube 案例研究

YouTube 使用 MediaCapabilities API 来防止其自适应比特率算法自动选择设备无法流畅播放的分辨率。

实验组的用户总体上看到的重新缓冲次数减少了(重新缓冲间隔时间 [MTBR] 增加了 7.1%),而向该组用户提供的平均分辨率(以视频高度衡量)仅下降了 0.4%。MTBR 大幅增加,而平均分辨率相应略有降低,这表明此项更改显著改善了之前体验不佳的一小部分用户的画质。

在您的网站上实现 Media Capabilities API

查看官方示例,了解 Decoding Info API 的运作方式。