默认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