H5 qq浏览器video拦截处理

QQ浏览器中如果使用video标签,那么浏览器会将video劫持,使用他们浏览器自带的video,那么层级会很高,之前写在video上面的样式就会被覆盖,因此可以把视频url转成blod,那么就可以解决

从虎牙直播发现的,他们转为blod后,上面就可以加弹幕,滚动条等,因此发现了这个

 

1、将video的视频链接转为blod

encryptionVideo(url) {
            return new Promise((resolve, reject) => {
                window.URL = window.URL || window.webkitURL;
                var xhr = new XMLHttpRequest();
                xhr.open('GET', url, true);
                xhr.responseType = 'blob';
                xhr.onload = function() {
                    if (this.status == 200) {
                        var blob = this.response;
                        var u = window.URL.createObjectURL(blob);
                        resolve(u);
                    }
                };
                xhr.send();
            });
        }

 2、但是用了之后,会出现一个问题,那就是视频过大,上面的方法等同于把视频下载在转blob,对于超过100M的视频,显示会非常缓慢,因此在研究之后,可以使用Range,和MediaSource来处理

    MediaSource 文档  https://developer.mozilla.org/zh-CN/docs/Web/API/MediaSource

 即创建一个arraybuffer,然后往里面不断添加数据,但是目前有个问题那就是不是FMP4,使用Range后,添加不进去,目前不知道什么原因

 测试是否是FMP4网址  https://gpac.github.io/mp4box.js/test/filereader.html

posted @ 2023-06-13 09:41  孙大猛子  阅读(554)  评论(0编辑  收藏  举报