另类视频数据流m3u8加密,支持手机,防嗅探防下载防合成,支持无嗅探手机浏览器播放

此方法基本屏蔽市面 所有的播放地址嗅探(手机浏览器嗅探),以及m3u8下载合成mp4 工具

支持平台:

移动端 IOS系列 经测试基本不支持

基本安卓移动端不含自行嗅探功能的基本都支持

window MAC PC 基本测试没问题

APP肯定就不用说了,处理下就OK了

这就有点像优酷,腾讯,爱奇艺,芒果 这类的大站的对 drm版权数字加密 处理,只能在PC和自个的移动端上播放。

不过方法不同,这个更是简单粗暴

 

相关记录:

 

[rihide]

//引用最新的hls文件  
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer@latest/dist/DPlayer.min.css">
 <!--hls文件-->
<script src="https://cdn.jsdelivr.net/npm/hls.js/dist/hls.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.js"></script>

//重写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;
}

[/rihide]

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容