默認uni-app打包出來的H5在Android上是無法播放.m3u8直播流的,控制檯或報錯javascript
Uncaught (in promise) DOMException: The element has no supported sources.
能夠用hls.js來解決,在App.vue的onLaunch方法中增長加下列代碼便可:vue
// 下面的代碼增長對Android H5播放m3u8支持 // #ifdef H5 if (uni.getSystemInfoSync().platform != 'ios') { var script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/hls.js@latest"; script.onload = function() { let init = function(video) { if (!video.getAttribute('hls-inited')) { let hls = null; let load = function() { let src = video.src; if (!src || src.indexOf('.m3u8') < 0) return if (!hls) { hls = new Hls(); hls.attachMedia(video); } hls.loadSource(src); } video.addEventListener("error", function() { load(); }, false); video.addEventListener("DOMNodeRemovedFromDocument",function(){ if(hls){ hls.destroy() } }, false); video.setAttribute('hls-inited', 'ok'); } } document.getElementsByTagName("video").forEach(init) document.body.addEventListener("DOMNodeInserted", function(e) { let ele = e.relatedNode; if (ele.tagName === 'VIDEO') { init(ele); } ele.getElementsByTagName("video").forEach(init) }) } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(script, s); } // #endif