Microsoft Edge HLS支持和其他浏览器

时间:2017-08-09 17:29:43

标签: javascript video html5-video microsoft-edge

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会返回undefined,从而打破其他预期的调用。

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

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

1 个答案:

答案 0 :(得分:0)

你实际上不希望这样做,因为最新规范play()返回一个承诺,这将永远不会真实(被拒绝的承诺,表明缺乏支持,并非未定义)因此仍然会通过你的if语句。

实际上有一种内置方法可以检查canPlayType中是否支持视频类型。这是基于任何媒体元素(即< audio>和< video>)构建的,您只需为您要播放的内容传递mimetype。对于大多数HLS内容,您可以使用application/x-mpegURL。由于media元素不必在DOM中运行,因此您可以像这样编写

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

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