符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
本篇文章为大家展示了如何使用html5自定义实现播放器代码,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
成都创新互联公司专注于廉江企业网站建设,成都响应式网站建设公司,电子商务商城网站建设。廉江网站建设公司,为廉江等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务本次的分享是一个基于HTML5标签实现的一个自定义视频播放器。其中实现了播放暂停、进度拖拽、音量控制及全屏等功能。
效果预览
点我查看 源码仓库 。
核心思路
我相信一定会有些没有接触过制作自定义播放器的童鞋对于 标签的认识会停留在此。
其中controls属性经过设定,会在界面中显示一个浏览器自带的控制条。如果对于UI没有要求的需求,其内置控制器已经可以满足大部分的需求。当然了如果是这样你们也不会看到这篇分享了=。=
隐藏控制条并模拟
那么实现一个自定义功能的播放器关键就在于,我们不使用原生的控制器,将其隐藏掉之后,在下方同样的位置通过html、css来模拟所需样式,同时通过js来调用vedio标签所暴露给我们的接口函数及属性,以及检测用户的操作行为来同步的模拟UI与视频播放数据的相应变化。
几个核心函数及属性的用法
myVid=document.getElementById("video1"); //控制视频开关 myVid.play() //播放 myVid.pause() //暂停 //模拟视频进度条 myVid.currentTime=5; //返回或设定当前视频播放位置 myVid.duration // 返回视频总长度 //模拟视频音量 myVid.volume //音量 //获取视频当前状态后判断何时从loading切换为播放 myVid.readyState //0 = HAVE_NOTHING - 没有关于音频/视频是否就绪的信息 //1 = HAVE_METADATA - 关于音频/视频就绪的元数据 //2 = HAVE_CURRENT_DATA - 关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒 //3 = HAVE_FUTURE_DATA - 当前及至少下一帧的数据是可用的 //4 = HAVE_ENOUGH_DATA - 可用数据足以开始播放
在所有实现中的关键点,较为繁琐的是对于进度条的模拟。其中使用了video标签中的currentTime以及duration属性,通过当前播放时间与总播放时间的比值,就可以计算出进度条相对于总长的位置。同时用户通过拖拽进度条所最后设置的长度也可以用来反向推算出此时视频应该播放的位置。
拖拽代码思路
//核心代码示例 var dragDis = 0 var processWidth = xxx //拖拽条总长 $('body').mousedown(function(e) { startX = e.clientX dragDis = startX - leftInit //leftInit为拖拽条起始点巨屏幕左侧的距离 dragTarget.css({ //拖拽按钮 left: dragDis }) dragProcess.css({ //进度条(蓝色进度条) width: dragDis }) // 令进度条和拖拽按钮渲染在同一位置 videoSource.pause() }).mousemove(function(e) { moveX = e.clientX disX = moveX - startX var left = dragDis + disX if(left > processWidth) { left = processWidth } else if(left < 0) { left = 0 } dragTarget.css({ left: left }) dragProcess.css({ width: left }) }).mouseup(function(e) { videoSource.play() videoSource.currentTime = $('蓝色拖拽条').width() / processWidth * duration //拖拽后计算视频的正确播放位置 })
同理音量的控制与其上行为基本一致,故在源码中作者将音量与进度部分通过不同元素进行判断是进行进度还是音量的拖拽控制。
通过查询视频流状态控制播放前的加载动画
function ifState() { var state = videoSource.readyState if(state === 4) { //状态为4即可播放 videoPlayer() } else { $('.play-sym-wrapper').remove() $('body').append('') //添加loading动画 setTimeout(ifState, 10) } } setTimeout(ifState, 10)
核心的控制部分已经说完了,有兴趣的同学可以去源码的html中点击播放,其中被迫有很多零碎的需求,比如点击暂停,保存音量等等。整个视频播放器的基础功能实现的还算完善。
上述内容就是如何使用html5自定义实现播放器代码,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。