iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在HTML5中自定义一个视频播放器
  • 418
分享到

怎么在HTML5中自定义一个视频播放器

2023-06-09 12:06:27 418人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关怎么在HTML5中自定义一个视频播放器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。video对象兼容性写法<video controls>&nbs

这期内容当中小编将会给大家带来有关怎么在HTML5中自定义一个视频播放器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

video对象

兼容性写法

<video controls>        <source src="data/demo.ovg">        <source src="data/demo.mp4">        <source src="data/demo.WEBm">        您的浏览器不支持,请升级您的浏览器    </video>

video 标签 width height autoplay muted

poster带有预览图(海报图片)的视频播放器

<video src='data/demo.mp4' muted controls autoplay height='400' width="200" poster='data/poster.jpg'></video>

选中video标签

var Videonode = document.getElementById('myVideo');

src控制视频的来源

VideoNode.src = 'data/demo.ogv';

手动设置控件 controls

VideoNode.controls = true;

设置视频音量

VideoNode.volume = 0.5;

currentTime当前播放时间

快进效果

Gogogo.onclick = function(){            VideoNode.currentTime = VideoNode.currentTime + 3;        };

暂停 pause()

  stopNode.onclick = function(){            VideoNode.pause();        };

播放play()

 playNode.onclick = function(){            VideoNode.play();        };

load 刷新播放器的事件

  reloadNode.onclick = function(){            VideoNode.src = 'data/demo.mp4';            VideoNode.load();        };

canplay 视频已经加载好 可以开始播放了

 VideoNode.addEventListener('canplay',function(){            console.log('视频已经加载好 可以开始播放了');        });

requestFullscreen 让video标签变成全屏

VideoNode.webkitRequestFullscreen();VideoNode.mozRequestFullScreen();        fullScreenNode.onclick = function(){            if(VideoNode.webkitRequestFullscreen){                VideoNode.webkitRequestFullscreen();            }            else if(VideoNode.mozRequestFullScreen){                VideoNode.mozRequestFullScreen();            }        };

volumechange 当音量更改时

VideoNode.onvolumechange = function(){            console.log('volumechange');        };

声音随机更改

volumeNode.onclick = function(){            VideoNode.volume = Math.random();        };

seeking 当用户开始拖动进度条时 就会触发的事件

 var seekingNum = 0;        VideoNode.onseeking = function(){            console.log('seeking...');            seekingNum++;            seeking.innerhtml = seekingNum;        };

seeked 当用户对视频的进度条并且已经完成操作时会触发的事件

   var seekedNum = 0;        VideoNode.onseeked = function(){            console.log('seeked...');            seekedNum++;            seeked.innerHTML = seekedNum;        };

timeupdate监听视频播放的状态

   VideoNode.addEventListener('timeupdate',function(){            // 总时长,以分钟:秒的形式显示            let allTime = parseInt(VideoNode.duration/60)+':'+parseInt(VideoNode.duration%60);            // 当前时间,以分钟:秒的形式显示            let nowTime = parseInt(VideoNode.currentTime/60)+':'+parseInt(VideoNode.currentTime%60);            timeNode.innerHTML = nowTime+'/'+allTime;        })

readyState 视频的准备信息

  console.log(VideoNode.readyState);        setTimeout(function(){            console.log(VideoNode.readyState);        },500);

playbackRate 查看或设置视频的一个播放速度

 console.log(VideoNode.playbackRate)

Rate设置倍速

//Rate设置0.5倍速        RateNode.children[0].onclick = function(){            VideoNode.playbackRate = 0.5;        };        //Rate设置1倍速        RateNode.children[1].onclick = function(){            VideoNode.playbackRate = 1;        };        //Rate设置2倍速        RateNode.children[2].onclick = function(){            VideoNode.playbackRate = 2;        };

loop的设置

 loopNode.onclick = function(){            if(VideoNode.loop == false){                this.innerHTML = '循环';                VideoNode.loop = true;            }            else{                this.innerHTML = '不循环';                VideoNode.loop = false;            }        };

src返回的数据

console.log('src='+VideoNode.src);

currentSrc返回的数据

console.log('currentSrc='+VideoNode.currentSrc);

监听ended事件

VideoNode.addEventListener('ended',function(){            console.log('视频播放结束了');            VideoNode.play();        })

查看视频的网络状态

console.log(VideoNode.networkState)

手动设置控件 controls

VideoNode.controls = true;

手动设置静音 muted

VideoNode.muted = true;

自定义视频播放器

怎么在HTML5中自定义一个视频播放器

放图

<!doctype html> <html> <head>     <meta charset="utf-8">     <title></title>     <style type="text/CSS">*{margin: 0;padding: 0;list-style: none;} .outerNode{width: 540px;height: 332px;position: absolute;left: 50%;top: 50%;margin: -166px 0 0 -270px;box-shadow: 0 0 4px #5b606d;}  .outerNode .videoNode{    width: 540px;height: 305px;float: left;    background: black;}     .outerNode .controlsNode{    width: 540px;height: 27px;float: left;background: url(images/ctrs_bg.gif) repeat-x;}.outerNode .controlsNode .playNode{    float: left;width: 15px;height: 17px;margin: 6px 0 0 14px;    background: url(images/playNode.png) no-repeat;cursor: pointer;}.outerNode .controlsNode .pauseNode{    float: left;width: 15px;height: 17px;margin: 6px 0 0 14px;    background: url(images/pause.png) no-repeat;cursor: pointer;}.outerNode .controlsNode .loadNode{width: 267px;height: 10px;margin: 9px 0 0 14px;float: left;background: url(images/load_bg.png) repeat-x;position: relative;}.outerNode .controlsNode .loadNode .lineNode{    width: 0%;height: 7px;position: absolute;left: 0;top: 1px;    background: url(images/line_bg.png) repeat-x;}.outerNode .controlsNode .loadNode .lineNode .lineRight{    width: 2px;height: 100%;position: absolute;right: 0;top: 0;    background: url(images/line_r_bg.png) no-repeat;}.outerNode .controlsNode .loadNode .loadLeft{    height: 100%;width:3px ;position: absolute;left: 0;top: 0;    background: url(images/left_bg.png) no-repeat;z-index: 4;}.outerNode .controlsNode .loadNode .loadRight{    height: 100%;width:3px ;position: absolute;right: 0;top: 0;    background: url(images/right_bg.png) no-repeat;}.outerNode .controlsNode .loadNode .crlNode{width: 17px;height: 17px;background: url(images/crl_bg.png);position: absolute;left: -8.5px;top: -3.5px;cursor: pointer;z-index: 5;}.outerNode .controlsNode .timeNode{    float: left;width: 75px;height: 10px;margin: 9px 0 0 9px;}.outerNode .controlsNode .timeNode span{font-size:10px;float: left;line-height: 10px;color: white; }.outerNode .controlsNode .volumeNode{    width: 17px;height: 16px;float: left;margin: 5px 0 0 6px;    background: url(images/volume_bg.png);}.outerNode .controlsNode .volumeLine{    height: 8px;width: 61px;float: left;margin: 10px 0 0 4px;    background: url(images/volumeLine_bg.png) repeat-x;position: relative; }.outerNode .controlsNode .volumeLine .v_left{    width: 3px;height:100%;position: absolute;left: 0;top: 0;background: url(images/v_left.png) no-repeat;}.outerNode .controlsNode .volumeLine .v_right{    width: 3px;height:100%;position: absolute;right: 0;top: 0;background: url(images/v_right.png) no-repeat;}.outerNode .controlsNode .volumeLine .v_DragNode{width: 15px;height: 13px;position: absolute;left: 58.5px;top: -3.5px;background: url(images/vo_d.png) no-repeat;cursor: pointer;}.outerNode .controlsNode .fullNode{    width:15px;height:17px;float: left;margin: 6px 0 0 35px;    background: url(images/full_bg.png) no-repeat;cursor: pointer;    transition: 0.7s;}.outerNode .controlsNode .fullNode:hover{    background: url(images/full_hover_bg.png) no-repeat;}    </style></head><body>    <!-- 最外层的元素 -->    <div class='outerNode'>        <!-- video元素 -->        <video class='videoNode' src='data/imooc.mp4' poster="data/poster.jpg"></video>        <!-- 控制器的元素 -->        <div class='controlsNode'>            <!-- 控制播放暂停的按钮 -->            <div class='playNode'></div>            <!-- video的进度条 -->            <div class='loadNode'>                <div class='loadLeft'></div>                <div class='loadRight'></div>                <!-- 拖动进度条的按钮 -->                <div class='crlNode'></div>                <!-- 真正的进度条 -->                <div class='lineNode'>                    <div class='lineRight'></div>                </div>            </div>            <!-- 时间的元素 -->            <div class='timeNode'>                <span class='now'>00:00</span>                <span> - </span>                <span class='all'>4:30</span>            </div>            <!-- 声音的标志 -->            <div class='volumeNode'></div>            <!-- 声音的条 -->            <div class='volumeLine'>                <div class='v_left'></div>                <div class='v_right'></div>                <div class='v_DragNode'></div>            </div>            <!-- 全屏的按钮 -->            <div class='fullNode'></div>        </div>    </div><script type="text/javascript">    //播放暂停的控制    //PlayNode 播放器按钮    //VideoNode 播放器    //PlayBln 控制暂停播放的布尔值    //FullNode 全屏按钮    //nowNode 当前时间    //allNode 视频的全部时间    //LineNode 当前的进度条    //CrlNode 进度条按钮    //LoadNode 进度条外面的元素    var PlayNode = document.getElementsByClassName('playNode')[0],        VideoNode = document.getElementsByClassName('videoNode')[0],        FullNode = document.querySelector('.fullNode'),        nowNode = document.querySelector('.now'),        allNode = document.querySelector('.all'),        LineNode = document.querySelector('.lineNode'),        CrlNode = document.querySelector('.crlNode'),        LoadNode = document.querySelector('.loadNode'),        VDragNode = document.querySelector('.v_DragNode'),        PlayBln = true;    //播放、暂停的事件    PlayNode.onclick = function(){        //传统的通过布尔值去改变classname的方法        PlayBln = !PlayBln;        if(PlayBln == false){            this.className = 'pauseNode';            VideoNode.play();        }        else{            this.className = 'playNode';            VideoNode.pause();        }    };    //全屏按钮的事件    FullNode.onclick = function(){        if(VideoNode.webkitRequestFullscreen){            VideoNode.webkitRequestFullscreen();        }        else if(VideoNode.mozRequestFullScreen){            VideoNode.mozRequestFullScreen();        }        else{            VideoNode.requestFullscreen();        }    };    //解决最开始时间的NAN的问题    VideoNode.addEventListener('canplay',function(){        var needTime = parseInt(VideoNode.duration);        var  s = needTime%60;        var  m = parseInt(needTime / 60);        var timeNum = toDou(m)+':'+toDou(s);        allNode.innerHTML = timeNum;    },false);    //解决 时间不足10 的问题    function toDou(time){        return time<10?'0'+time:time;    }    //当视频播放的时候 需要当前的时间动起来    VideoNode.addEventListener('timeupdate',function(){        //目前的 百分比进度        LineNode.style.width = VideoNode.currentTime/VideoNode.duration*100+'%';        CrlNode.style.left = LineNode.offsetWidth - 8.5 + 'px'        var needTime = parseInt(VideoNode.currentTime);        var  s = needTime%60;        var  m = parseInt(needTime / 60);        var timeNum = toDou(m)+':'+toDou(s);        nowNode.innerHTML = timeNum;    },false);    //声音的拖拽按钮    VDragNode.onmousedown = function(e){        var ev = e || event;        var l = ev.clientX - this.offsetLeft;        document.onmousemove = function(e){            var ev = e || event;            var needX = ev.clientX - l;            var maxX = VDragNode.parentNode.offsetWidth - 2.5;            needX = needX < -2.5 ? - 2.5 : needX;            needX = needX > maxX ? maxX : needX;            //计算0 - 1            var lastVolume = (VDragNode.offsetLeft + 2) / VDragNode.parentNode.offsetWidth ;            VideoNode.volume = lastVolume < 0 ? 0 : lastVolume;            VDragNode.style.left = needX + 'px';        };        document.onmouseup = function(e){            document.onmousemove = document.onmouseup = null;        }        return false;    }    //拖拽进度条按钮    CrlNode.onmousedown = function(e){        var ev = e || event;        var l = ev.clientX - this.offsetLeft;        VideoNode.pause();        document.onmousemove = function(e){            var ev = e || event;            var needX = ev.clientX - l;            var maxX = LoadNode.offsetWidth - 8.5;            needX = needX < -8.5 ? -8.5 : needX;            needX = needX > maxX ? maxX : needX;            CrlNode.style.left = needX + 'px';            LineNode.style.width = (CrlNode.offsetLeft+9)/LoadNode.offsetWidth*100 + '%';        };        document.onmouseup = function(){            document.onmousemove = document.onmouseup = null;            VideoNode.currentTime = VideoNode.duration * (CrlNode.offsetLeft+9)/LoadNode.offsetWidth;            if(PlayBln == false){                //console.log(1);                PlayNode.className = 'pauseNode';                VideoNode.play();            }            else{                //console.log(2);                PlayNode.className = 'playNode';                VideoNode.pause();            }        };        return false;    };</script></body></html>

上述就是小编为大家分享的怎么在HTML5中自定义一个视频播放器了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么在HTML5中自定义一个视频播放器

本文链接: https://www.lsjlt.com/news/255834.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在HTML5中自定义一个视频播放器
    这期内容当中小编将会给大家带来有关怎么在HTML5中自定义一个视频播放器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。video对象兼容性写法<video controls>&nbs...
    99+
    2023-06-09
  • Android怎么自定义视频播放器
    要自定义Android视频播放器,可以按照以下步骤进行: 创建一个新的Android项目,并在布局文件中添加一个SurfaceVi...
    99+
    2023-10-26
    Android
  • Python如何创建一个自定义视频播放器
    这篇文章主要讲解了“Python如何创建一个自定义视频播放器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何创建一个自定义视频播放器”吧!1、安装vlc的64位版本。2、安装p...
    99+
    2023-07-05
  • 如何在HTML5中自定义一个mp3播放器
    如何在HTML5中自定义一个mp3播放器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。audio对象src兼容.ogg .wav .mp3<audio co...
    99+
    2023-06-09
  • Python创建一个自定义视频播放器的实现
    要创建一个自定义视频播放器的实现,可以使用Python的多媒体库pygame。以下是一个简单的示例代码:```pythonimpor...
    99+
    2023-08-08
    Python
  • Angular中如何自定义视频播放器
    本篇内容主要讲解“Angular中如何自定义视频播放器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Angular中如何自定义视频播放器”吧!实现的功能如下:播...
    99+
    2022-10-19
  • 怎么在HTML5中播放 RTSP 视频
    今天就跟大家聊聊有关怎么在HTML5中播放 RTSP 视频,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。目前已有 RTSP 播放方案的对比既然是做直播,就需要延迟较低。当摄像头掉线时...
    99+
    2023-06-09
  • Python自定义视频播放器的方法是什么
    要自定义视频播放器,你可以使用Python的多媒体库来实现。以下是一些常用的库和方法:1. pygame:它是一个用于游戏开发的库,...
    99+
    2023-08-08
    Python
  • 如何用JavaScript开发一款自定义配置视频播放器
    如何用JavaScript开发一款自定义配置视频播放器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言这几天抽空就一直在搞一个自定义视频...
    99+
    2022-10-19
  • 利用java怎么制作一个视频播放器
    今天就跟大家聊聊有关利用java怎么制作一个视频播放器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。建立普通maven项目,添加vlcj的依赖 <dependency...
    99+
    2023-05-31
    java ava
  • 怎么用HTML5在网页中嵌入音频和视频播放
    本篇内容介绍了“怎么用HTML5在网页中嵌入音频和视频播放”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!H...
    99+
    2022-10-19
  • html5自定义播放器核心代码怎么写
    今天就跟大家聊聊有关html5自定义播放器核心代码怎么写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 网页html ...
    99+
    2022-10-19
  • 怎么在VSCode中自定义一个html5模板
    这篇文章给大家介绍怎么在VSCode中自定义一个html5模板,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。(一)新建html快捷键当我们想在VSCode中新建html代码时,可以 输入! 然后回车或者Tab即可自动生...
    99+
    2023-06-09
  • 怎么在Android中使用GSYVideoPlayer播放视频器
    怎么在Android中使用GSYVideoPlayer播放视频器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。GSYVideoPlayerGSYVideoPla...
    99+
    2023-06-14
  • Android开发中怎么自定义一个视频录制功能
    本篇文章为大家展示了Android开发中怎么自定义一个视频录制功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android录制视频MediaRecorder+SurfaceView的使用方法&l...
    99+
    2023-05-31
    android roi
  • 在Bootstrap模式中怎么实现自动播放YouTube视频
    本篇内容介绍了“在Bootstrap模式中怎么实现自动播放YouTube视频”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2022-10-19
  • 怎么在HTML5页面中实现一个音乐播放器
    这篇文章给大家介绍怎么在HTML5页面中实现一个音乐播放器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。<audio id="music1">浏览器不支持audio标签<...
    99+
    2023-06-09
  • 怎么在HTML5中通过自定义元素实现播放焦点图动画
    这期内容当中小编将会给大家带来有关怎么在HTML5中通过自定义元素实现播放焦点图动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML代码<div class="parall...
    99+
    2023-06-09
  • 怎么在HTML5中实现一个视频弹幕功能
    这篇文章给大家介绍怎么在HTML5中实现一个视频弹幕功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1>html代码展示<div class="barrage">&nb...
    99+
    2023-06-09
  • 怎么在HTML5中实现一个全屏视频背景
    这篇文章将为大家详细讲解有关怎么在HTML5中实现一个全屏视频背景,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。特性自动调整:Bideo.js可以根据当前浏览器窗口的大小自动调整视频尺寸,当...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作