2017-08-09 100 views
0

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.onplayvideo.onplaying在所有浏览器中实际发现视频播放,并确保它播放HLS视频。

有没有更好的方法来验证在边缘?

回答

0

你实际上不想这样做,因为最新的规范有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 
}