Microsoft Edge HLS 支持和其他浏览器

Microsoft Edge HLS support and other browsers

Microsoft Edge 支持 HLS,但有些浏览器不支持(例如 Chrome)。我读到要测试 HLS 的可用性,您必须以这种方式测试 video.src:

videoPromise = video.play()

if(videoPromise !== undefined){
    // There's support
} else {
    // There's no support
}

此代码用于在不支持 HLS 的情况下提供替代方案,但在 Edge 中使用此代码时,video.play returns undefined 并因此中断其他预期调用。

一种可能的替代方法是使用 video.onplayvideo.onplaying 在所有浏览器中实际查找视频播放,并确保它播放 HLS 视频。

是否有更好的方法在 Edge 中验证这一点?

你真的不想这样做,因为最新的规范有 play() return 一个承诺,它永远不会是真实的(一个被拒绝的承诺,表明缺乏的支持,不是未定义的,因此仍然会通过你的 if 语句)。

canPlayType 中实际上有一个内置的方法来检查视频类型是否受支持。这是基于任何媒体元素(即

var supported = document.createElement('video').canPlayType('application/x-mpegURL')

if (supported) {
  // There's support
} else {
  // There's no support
}