2017-08-09 143 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 
}