Microsoft Edge HLS支持和其他浏览器
问题描述:
Microsoft Edge支持HLS,但有些浏览器不支持(例如Chrome)。我读来测试你有测试video.src这样HLS的可用性:Microsoft Edge HLS支持和其他浏览器
videoPromise = video.play()
if(videoPromise !== undefined){
// There's support
} else {
// There's no support
}
此代码是提供给HLS替代,如果没有支持,但是当这种代码在边缘时, video.play
返回undefined
并因此打破其他预期呼叫。
另一种可能的替代方法是使用video.onplay
和video.onplaying
在所有浏览器中实际发现视频播放,并确保它播放HLS视频。
有没有更好的方法来验证在边缘?
答
你实际上不想这样做,因为最新的规范有play()
返回一个承诺,这永远不会是真的(被拒绝的承诺,表明缺乏支持,不是没有定义,因此将仍然通过你的if语句)。
在canPlayType
中实际上有内置的方法来检查是否支持视频类型。这是由任何媒体元素(即<音频>和<视频>)构成的,您只需传递您想播放的内容的mimetype即可。对于大多数HLS内容,您可以使用application/x-mpegURL
。由于媒体元素不必在DOM中才能正常工作,因此您可以这样写:
var supported = document.createElement('video').canPlayType('application/x-mpegURL')
if (supported) {
// There's support
} else {
// There's no support
}