Dplayer播放器替换、删除ts文件

该代码只对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 < arr.length; i++) {
            var strts = arr[i];
            //给每个ts链接增加一个q=12345的参数,只是举个例子
            //不要纠结有没有意思
             strts=strts+"?q=12345";
             playlist = playlist.replace(strts, "");
         }
    }
    return playlist;
}

人已赞赏
源码分享

封装PHP的curl请求支持POST和GET

2020-9-28 21:25:23

源码分享

咪咕视频解析代码

2020-10-11 14:44:52

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索