该代码只对PC有效,对部分接管视频播放器的手机浏览器完全无效。
其实m3u8里面不一定是ts,也可以是.png或者.jpg等,我这里就很文盲地统称它们为“ts文件”
//引用最新的hls文件 //重写dplayer播放器的hls config var dp = new DPlayer({ container: document.getElementById('video'), theme: '#4C8FE8', volume: 0.8, autoplay: true, video: { url: urls, type: 'hls', defaultQuality: 0 }, pluginOptions: { hls: { pLoader: pLoader,//重写这个方法,就可以改了... // hls config xhrSetup: function(xhr, url) { //这个方法其实可以删除的,跟重写上面的方法功能类似,但没有上面的强大.. //每个ts的url加载都会走这里... //这里可以修改url地址..但不能删..(如果不去open的话,就会404...) //这里就不删了,做个记录... ///// ////// ///////如果要用的话,记着删了这个if的逻辑... ////这个地方我是记录用的.... if (/\.ts/.test(url)) { url = url + '?_q=123456' xhr.open('GET', url, true); } } }, }, }); class pLoader extends Hls.DefaultConfig.loader { constructor(config) { super(config); var load = this.load.bind(this); this.load = function(context, config, callbacks) { //这里有两个值manifest level //manifest:加载最早的,但这个东西有时候还包裹着另外一层,不是最终的。看情况 // level:这玩意貌似是最后的... if (context.type == 'level') { var onSuccess = callbacks.onSuccess; callbacks.onSuccess = function(response, stats, context) { //这是重点...实现方法在下面 response.data = process(response.data); onSuccess(response, stats, context); } } load(context, config, callbacks); }; } } //playlist是m3u8的ts文件内容 //所以可以在这里用正则或者其他替换方法 //进行对ts文件地址的增删改查 function process(playlist) { //这个正则也是举例子...没有具体的需求跟实际意义 //具体怎么替换根据需求写...... //不要纠结为什么写这个 //因为我愿意,这是我的博客.... var arr = playlist.match(/#EXTINF(?:.|\n)*?ts\n/gi); if (arr != null){ for (var i = 0; i