时间:2020-10-22加入收藏
//引用最新的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 < arr.length; i++) {
var strts = arr[i];
//给每个ts链接增加一个q=12345的参数,只是举个例子
//不要纠结有没有意思
strts=strts+"?q=12345";
playlist = playlist.replace(strts, "");
}
}
return playlist;
}
TGA: 技巧