资讯专栏INFORMATION COLUMN

vlc+video全浏览器兼容视频播放、倍速播放

susheng / 2935人阅读

摘要:二解决思路首先无法兼容低版本,考虑使用视频播放插件,视频播放软件有自带的插件,安装时会自动安装插件,不过要注意的是的版本必须与浏览器的版本一致即如果是位则必须安装位。使用解决的视频播放和倍速播放,其它浏览器则使用实现。

一、项目起源
公司项目中需要视频播放,并且需要实现倍速播放,最重要的是需要兼容IE8,于是乎HTML5的video显然无法使用,只能另辟蹊径,查找资料最终决定使用vlc视频播放插件兼容IE,再加上video,可以实现全浏览器兼容的视频播放和倍速播放。
二、解决思路
首先H5video无法兼容低版本IE,考虑使用ActiveX视频播放插件,vlc视频播放软件有自带的ActiveX插件,安装时会自动安装插件,不过要注意的是vlc的版本必须与IE浏览器的版本一致(即如果IE是32位则必须安装32位vlc)。使用vlc解决IE的视频播放和倍速播放,其它浏览器则使用video实现。
三、解决办法

1、判断浏览器类型

// 获取浏览器类型
        function getBrowserInfo() {
            var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 
            var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 
            var isIE = window.ActiveXObject || "ActiveXObject" in window
            var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
            var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器 
            var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器 
            var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1 && !isEdge; //判断Chrome浏览器 
            if (isIE) {
                var reIE = new RegExp("MSIE (d+.d+);");
                reIE.test(userAgent);
                var fIEVersion = parseFloat(RegExp["$1"]);
                if (userAgent.indexOf("MSIE 6.0") != -1) {
                    return "IE6";
                } else if (fIEVersion == 7) {
                    return "IE7";
                } else if (fIEVersion == 8) {
                    return "IE8";
                } else if (fIEVersion == 9) {
                    return "IE9";
                } else if (fIEVersion == 10) {
                    return "IE10";
                } else if (userAgent.toLowerCase().match(/rv:([d.]+)) like gecko/)) {
                    return "IE11";
                } else {
                    return "0"
                } //IE版本过低
            } //isIE end 

            if (isFF) {
                return "FF";
            }
            if (isOpera) {
                return "Opera";
            }
            if (isSafari) {
                return "Safari";
            }
            if (isChrome) {
                return "Chrome";
            }
            if (isEdge) {
                return "Edge";
            }
        }

2、若是IE则判断是否安装vlc ActiveX插件

        function isInsalledIEVLC() {
            var vlcObj = null;
            var vlcInstalled = false;
            try {
                vlcObj = new ActiveXObject("VideoLAN.Vlcplugin.2");
                if (vlcObj != null) {
                    vlcInstalled = true
                }
            } catch (e) {
                vlcInstalled = false;
            }
            return vlcInstalled;
        }

3、若未安装则判断浏览器版本,根据版本下载对应的vlc

        // 获取浏览器32位还是64位,安装对应的vlc
        function getPlatform() {
            var agent = navigator.platform.toLowerCase();
            if (agent.indexOf("win64") >= 0 || agent.indexOf("wow64") >= 0) {
                return "win64";
            } else if(agent.indexOf("win32") >= 0 || agent.indexOf("wow32") >= 0){
                return "win32";
            }
        }

4、若是IE浏览器且已安装vlc,HTML标签如下

5、非IE浏览器使用video

        

6、播放和暂停

        var useVlc = getBrowserInfo().indexOf("IE") != -1;
        var VIDEO = document.getElementById("video");
        var VLC = document.getElementById("vlcObj");
        // 播放
        function playVideo(url) {
            if(useVlc){
                url ? VLC.playlist.add(url) : "";
                VLC.playlist.play();
            }else{
                url ? VIDEO.src = url : "";
                VIDEO.networkState != 3 ?  VIDEO.play() : "";
            }
        }

        // 暂停播放
        function zanting() {
            if(useVlc){
                VLC.playlist.pause();
            }else{
                VIDEO.pause();
            }
        }

7、倍速播放

// 绑定倍速
        
        
            $("#beisu").on("change", function(){
                var v = $(this).val();
                if (useVlc) {
                    VLC.input.rate = v;
                } else {
                    VIDEO.playbackRate = v;
                }
            });

8、快进、快退

        // 快进10秒播放
        function kuaijin() {
            if(useVlc){
                VLC.input.time += 10000;
            }else{
                VIDEO.currentTime += 10;
            }
        }

        // 快退10秒播放
        function kuaitui() {
            if(useVlc){
                VLC.input.time -= 10000;
            }else{
                VIDEO.currentTime -= 10;
            }
        }
四、完整代码+demo

github仓库地址:vlc-video

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34664.html

相关文章

  • vlc+video览器兼容视频播放倍速播放

    摘要:二解决思路首先无法兼容低版本,考虑使用视频播放插件,视频播放软件有自带的插件,安装时会自动安装插件,不过要注意的是的版本必须与浏览器的版本一致即如果是位则必须安装位。使用解决的视频播放和倍速播放,其它浏览器则使用实现。 一、项目起源 公司项目中需要视频播放,并且需要实现倍速播放,最重要的是需要兼容IE8,于是乎HTML5的video显然无法使用,只能另辟蹊径,查找资料最终决定使用vlc...

    weakish 评论0 收藏0
  • App增加倍速视频的坎坷之路

    摘要:为了增加倍速功能,并保持系统版本兼容,一开始选择的是集成播放器的方案。版本后,增加了倍速播放功能,但本身结构比较庞大,集成难度较高,增加了后续维护的难度,在使用一段时间后,开始考虑给端更换另外一种倍速方案。 课程视频越来越长,学习时间越来越少。面对这些场景,很多视频播放的App都增加了倍速功能,可以开启0.5x、1.5x甚至2.0x等倍速,用于增强播放功能。 iOS系统播放内核的强大,...

    Integ 评论0 收藏0
  • Web端直接播放 .ts 视频

    摘要:常见方案在网上查找的大部分解决方案都是用诸如等网页播放器,接收索引文件的方式来播放切片。根据实测,只用这一个库即可在端直接播放视频,如下是它的转化流程。 最近项目中需要前端播放 .ts 格式视频,捣鼓了几天学习到很多知识,也发掘了一种优秀的解决方案,分享给有同样需求的同学。 常见方案 在网上查找的大部分解决方案都是用诸如videojs等网页播放器,接收 .m3u8索引文件的方式来播放t...

    mmy123456 评论0 收藏0
  • Web端直接播放 .ts 视频

    摘要:常见方案在网上查找的大部分解决方案都是用诸如等网页播放器,接收索引文件的方式来播放切片。根据实测,只用这一个库即可在端直接播放视频,如下是它的转化流程。 最近项目中需要前端播放 .ts 格式视频,捣鼓了几天学习到很多知识,也发掘了一种优秀的解决方案,分享给有同样需求的同学。 常见方案 在网上查找的大部分解决方案都是用诸如videojs等网页播放器,接收 .m3u8索引文件的方式来播放t...

    sf190404 评论0 收藏0
  • html5--移动端视频video的android兼容,去除播放控件、屏等

    摘要:但在下,多数机子是不显示视频画面的,要不就是显示一个黑色的还不是全屏的播放控件,即使及加个封面也不济于是。因为微信的播放器是脱离结构的,也不会响应等事件。 android下html5的视频播放一直是前端兼容的重灾区,各种体验差,被诟病已久。但之前的故宫穿越H5,和吴亦凡入伍H5,利用的视频技术,貌似又给人一种新面貌。 前段时间做某项目,恰好也是一个类似视频全屏的,下面跟大家分享下经历的...

    everfly 评论0 收藏0

发表评论

0条评论

susheng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<