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.onplay
和video.onplaying
在所有浏览器中实际查找视频播放,并确保播放HLS视频。
是否有更好的方法可以在Edge中验证这一点?
答案 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
}