HTML5 Video player jQuery plugin As you know – HTML5 <video> element is already supported by most of browsers (by modern browsers). Its initialization is very easy. During today’s investigation I have understood few things: that each browser supports only few of video formats, and each browser has own native video controls (and all of them are different). But fortunately, html5 can give us all necessary possibilities to make own interface to control our video element. Today I will show you process of building own html5 player (quite crossbrowser), more, it will be new jquery plugin.

HTML5视频播放器jQuery插件众所周知,大多数浏览器(现代浏览器)已经支持HTML5 <video>元素。 它的初始化非常容易。 在今天的调查中,我了解到的事情很少:每种浏览器仅支持几种视频格式,并且每种浏览器都有自己的本机视频控件(并且所有控件都不相同)。 但幸运的是,html5可以为我们提供所有必要的可能性,以使自己的界面能够控制我们的视频元素。 今天,我将向您展示构建自己的html5播放器(相当跨浏览器)的过程,此外,它将是新的jquery插件。

Final result of our player:

我们玩家的最终结果:

Here are our demo and downloadable package:

这是我们的演示和可下载的软件包:

现场演示

[sociallocker]

[社交储物柜]

打包下载

[/sociallocker]

[/ sociallocker]

Ok, download the source files and lets start coding !

好的,下载源文件并开始编码!

步骤1. HTML标记 (Step 1. HTML Markup)

This is markup of our result slideshow page. Here it is:

这是我们的结果幻灯片页面的标记。 这里是:

index.html (index.html)


<div class="video_player"><video controls="controls" poster="media/poster.jpg" style="width:800px;"><source src="media/video.ogg" type="video/ogg" /><source src="media/video.mp4" type="video/mp4" /><source src="media/video.webm" type="video/webm" /></video><div class="custom_controls"><a class="play" title="Play"></a><a class="pause" title="Pause"></a><div class="time_slider"></div><div class="timer">00:00</div><div class="volume"><div class="volume_slider"></div><a class="mute" title="Mute"></a><a class="unmute" title="Unmute"></a></div></div>
</div>
<script>$(function() {$('.video_player').myPlayer();});
</script>

<div class="video_player"><video controls="controls" poster="media/poster.jpg" style="width:800px;"><source src="media/video.ogg" type="video/ogg" /><source src="media/video.mp4" type="video/mp4" /><source src="media/video.webm" type="video/webm" /></video><div class="custom_controls"><a class="play" title="Play"></a><a class="pause" title="Pause"></a><div class="time_slider"></div><div class="timer">00:00</div><div class="volume"><div class="volume_slider"></div><a class="mute" title="Mute"></a><a class="unmute" title="Unmute"></a></div></div>
</div>
<script>$(function() {$('.video_player').myPlayer();});
</script>

You can see here and our Video element, and the custom controls set. Plus – jquery plugin initialization. As you can see – I have to provide 3 file formats (ogg, mp4 and webm) to cover all browsers (FF, IE, Chrome, Safari and possible Opera too). As video converter software, I can recommend Miro Video Converter (http://www.mirovideoconverter.com/) as example.

您可以在这里看到我们的Video元素以及自定义控件集。 加– jQuery插件初始化。 如您所见–我必须提供3种文件格式(ogg,mp4和webm)以涵盖所有浏览器(FF,IE,Chrome,Safari和可能的Opera)。 作为视频转换器软件,我可以推荐Miro Video Converter(http://www.mirovideoconverter.com/)作为示例。

步骤2. CSS (Step 2. CSS)

Here are all stylesheets

这是所有样式表

css / player.css (css/player.css)


/* jquery */
.ui-slider-handle {display: block;margin-left: -9px;position: absolute;z-index: 2;
}
.ui-slider-range {bottom: 0;display: block;height: 100%;left: 0;position: absolute;width: 100%;z-index: 1;
}
/* player */
.video_player {background-color: #E8E8E8;border: 1px solid #888;float: left;padding: 10px;border-radius: 10px;-moz-border-radius: 10px;-webkit-border-radius: 10px;
}
/* controls */
.video_player .custom_controls {clear: both;height: 30px;padding-top: 8px;position: relative;width: 100%;
}
.play, .pause, .volume, .time_slider, .timer {float: left;
}
.play, .pause, .mute, .unmute {cursor: pointer;
}
.play, .pause {display: block;height: 24px;margin-left: 5px;margin-right: 15px;opacity: 0.8;width: 33px;transition: all 0.2s ease-in-out;-moz-transition: all 0.2s ease-in-out;-webkit-transition: all 0.2s ease-in-out;-o-transition: all 0.2s ease-in-out;
}
.play {background: url(../images/play.png) no-repeat;
}
.pause {background: url(../images/pause.png) no-repeat;display: none;
}
.play:hover, .pause:hover {opacity: 1;
}
.time_slider {border: 1px solid #5f5f5f;height: 10px;margin-top: 5px;position: relative;width: 630px;border-radius: 5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;background: #777777;background-image: -moz-linear-gradient(top, #777777, #9d9d9d);background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #777777),color-stop(1, #9d9d9d));
}
.time_slider .ui-slider-handle {background: url(../images/handler.png) no-repeat;cursor: pointer;height: 16px;opacity: 0.8;top: -2px;width: 16px;
}
.time_slider .ui-slider-handle.ui-state-hover {opacity: 1;
}
.time_slider .ui-slider-range {border-radius: 5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;background: #e9742e;background-image: -moz-linear-gradient(top, #e9742e, #c14901);background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e9742e),color-stop(1, #c14901));
}
.timer {color: #000;font-size: 12px;margin-left: 10px;margin-top: 3px;
}
.volume {bottom: 0;color: #FFFFFF;height: 35px;overflow: hidden;padding: 5px 10px 0;position: absolute;right: 0;width: 33px;
}
.volume:hover {background: url(../images/volume.png) no-repeat scroll 8px 0 transparent;height: 161px;
}
.volume_slider {height: 105px;left: -1px;opacity: 0;position: relative;width: 33px;
}
.volume:hover .volume_slider {opacity: 1;
}
.volume_slider .ui-slider-handle {background: url(../images/handler.png) no-repeat;height: 15px;left: 9px;margin-bottom: -15px;margin-left: 0;opacity: 0.8;width: 14px;
}
.volume_slider .ui-slider-handle.ui-state-hover {opacity: 1;
}
.mute, .unmute {bottom: 7px;display: block;height: 23px;opacity: 0.8;position: absolute;text-indent: -999px;width: 33px;
}
.mute:hover, .unmute:hover {opacity: 1;
}
.mute {background: url(../images/vol_full.png) no-repeat;
}
.unmute {background: url(../images/vol_mute.png) no-repeat;display: none;
}

/* jquery */
.ui-slider-handle {display: block;margin-left: -9px;position: absolute;z-index: 2;
}
.ui-slider-range {bottom: 0;display: block;height: 100%;left: 0;position: absolute;width: 100%;z-index: 1;
}
/* player */
.video_player {background-color: #E8E8E8;border: 1px solid #888;float: left;padding: 10px;border-radius: 10px;-moz-border-radius: 10px;-webkit-border-radius: 10px;
}
/* controls */
.video_player .custom_controls {clear: both;height: 30px;padding-top: 8px;position: relative;width: 100%;
}
.play, .pause, .volume, .time_slider, .timer {float: left;
}
.play, .pause, .mute, .unmute {cursor: pointer;
}
.play, .pause {display: block;height: 24px;margin-left: 5px;margin-right: 15px;opacity: 0.8;width: 33px;transition: all 0.2s ease-in-out;-moz-transition: all 0.2s ease-in-out;-webkit-transition: all 0.2s ease-in-out;-o-transition: all 0.2s ease-in-out;
}
.play {background: url(../images/play.png) no-repeat;
}
.pause {background: url(../images/pause.png) no-repeat;display: none;
}
.play:hover, .pause:hover {opacity: 1;
}
.time_slider {border: 1px solid #5f5f5f;height: 10px;margin-top: 5px;position: relative;width: 630px;border-radius: 5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;background: #777777;background-image: -moz-linear-gradient(top, #777777, #9d9d9d);background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #777777),color-stop(1, #9d9d9d));
}
.time_slider .ui-slider-handle {background: url(../images/handler.png) no-repeat;cursor: pointer;height: 16px;opacity: 0.8;top: -2px;width: 16px;
}
.time_slider .ui-slider-handle.ui-state-hover {opacity: 1;
}
.time_slider .ui-slider-range {border-radius: 5px;-moz-border-radius: 5px;-webkit-border-radius: 5px;background: #e9742e;background-image: -moz-linear-gradient(top, #e9742e, #c14901);background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #e9742e),color-stop(1, #c14901));
}
.timer {color: #000;font-size: 12px;margin-left: 10px;margin-top: 3px;
}
.volume {bottom: 0;color: #FFFFFF;height: 35px;overflow: hidden;padding: 5px 10px 0;position: absolute;right: 0;width: 33px;
}
.volume:hover {background: url(../images/volume.png) no-repeat scroll 8px 0 transparent;height: 161px;
}
.volume_slider {height: 105px;left: -1px;opacity: 0;position: relative;width: 33px;
}
.volume:hover .volume_slider {opacity: 1;
}
.volume_slider .ui-slider-handle {background: url(../images/handler.png) no-repeat;height: 15px;left: 9px;margin-bottom: -15px;margin-left: 0;opacity: 0.8;width: 14px;
}
.volume_slider .ui-slider-handle.ui-state-hover {opacity: 1;
}
.mute, .unmute {bottom: 7px;display: block;height: 23px;opacity: 0.8;position: absolute;text-indent: -999px;width: 33px;
}
.mute:hover, .unmute:hover {opacity: 1;
}
.mute {background: url(../images/vol_full.png) no-repeat;
}
.unmute {background: url(../images/vol_mute.png) no-repeat;display: none;
}

步骤3. JS (Step 3. JS)

js / script.js (js/script.js)


function rectime(secs) {var hr = Math.floor(secs / 3600);var min = Math.floor((secs - (hr * 3600))/60);var sec = Math.floor(secs - (hr * 3600) - (min * 60));if (hr < 10) {hr = '0' + hr; }if (min < 10) {min = '0' + min;}if (sec < 10) {sec = '0' + sec;}if (hr) {hr = '00';}return hr + ':' + min + ':' + sec;
}
(function($) {$.fn.myPlayer = function() {return this.each(function() {// variablesvar $oMain = $(this);var $oVideo = $('video', $oMain);var $oPlay = $('.play', $oMain);var $oPause = $('.pause', $oMain);var $oTimeSlider = $('.time_slider', $oMain);var $oTimer = $('.timer', $oMain);var $oVolSlider = $('.volume_slider', $oMain);var $oMute = $('.mute', $oMain);var $oUnmute = $('.unmute', $oMain);var bTimeSlide = false;var iVolume = 1;// functions sectionvar prepareTimeSlider = function() {if (! $oVideo[0].readyState) {setTimeout(prepareTimeSlider, 1000);} else {$oTimeSlider.slider({value: 0,step: 0.01,orientation: 'horizontal',range: 'min',max: $oVideo[0].duration,animate: true,slide: function() {bTimeSlide = true;},stop:function(e, ui) {bTimeSlide = false;$oVideo[0].currentTime = ui.value;}});};};// events section$oPlay.click(function () {$oVideo[0].play();$oPlay.hide();$oPause.css('display', 'block');});$oPause.click(function () {$oVideo[0].pause();$oPause.hide();$oPlay.css('display', 'block');});$oMute.click(function () {$oVideo[0].muted = true;$oVolSlider.slider('value', '0');$oMute.hide();$oUnmute.css('display', 'block');});$oUnmute.click(function () {$oVideo[0].muted = false;$oVolSlider.slider('value', iVolume);$oUnmute.hide();$oMute.css('display', 'block');});// bind extra inner events$oVideo.bind('ended', function() {$oVideo[0].pause();$oPause.hide();$oPlay.css('display', 'block');});$oVideo.bind('timeupdate', function() {var iNow = $oVideo[0].currentTime;$oTimer.text(rectime(iNow));if (! bTimeSlide)$oTimeSlider.slider('value', iNow);});// rest initialization$oVolSlider.slider({value: 1,orientation: 'vertical',range: 'min',max: 1,step: 0.02,animate: true,slide: function(e, ui) {$oVideo[0].muted = false;iVolume = ui.value;$oVideo[0].volume = ui.value;}});prepareTimeSlider();$oVideo.removeAttr('controls');});};
})(jQuery);

function rectime(secs) {var hr = Math.floor(secs / 3600);var min = Math.floor((secs - (hr * 3600))/60);var sec = Math.floor(secs - (hr * 3600) - (min * 60));if (hr < 10) {hr = '0' + hr; }if (min < 10) {min = '0' + min;}if (sec < 10) {sec = '0' + sec;}if (hr) {hr = '00';}return hr + ':' + min + ':' + sec;
}
(function($) {$.fn.myPlayer = function() {return this.each(function() {// variablesvar $oMain = $(this);var $oVideo = $('video', $oMain);var $oPlay = $('.play', $oMain);var $oPause = $('.pause', $oMain);var $oTimeSlider = $('.time_slider', $oMain);var $oTimer = $('.timer', $oMain);var $oVolSlider = $('.volume_slider', $oMain);var $oMute = $('.mute', $oMain);var $oUnmute = $('.unmute', $oMain);var bTimeSlide = false;var iVolume = 1;// functions sectionvar prepareTimeSlider = function() {if (! $oVideo[0].readyState) {setTimeout(prepareTimeSlider, 1000);} else {$oTimeSlider.slider({value: 0,step: 0.01,orientation: 'horizontal',range: 'min',max: $oVideo[0].duration,animate: true,slide: function() {bTimeSlide = true;},stop:function(e, ui) {bTimeSlide = false;$oVideo[0].currentTime = ui.value;}});};};// events section$oPlay.click(function () {$oVideo[0].play();$oPlay.hide();$oPause.css('display', 'block');});$oPause.click(function () {$oVideo[0].pause();$oPause.hide();$oPlay.css('display', 'block');});$oMute.click(function () {$oVideo[0].muted = true;$oVolSlider.slider('value', '0');$oMute.hide();$oUnmute.css('display', 'block');});$oUnmute.click(function () {$oVideo[0].muted = false;$oVolSlider.slider('value', iVolume);$oUnmute.hide();$oMute.css('display', 'block');});// bind extra inner events$oVideo.bind('ended', function() {$oVideo[0].pause();$oPause.hide();$oPlay.css('display', 'block');});$oVideo.bind('timeupdate', function() {var iNow = $oVideo[0].currentTime;$oTimer.text(rectime(iNow));if (! bTimeSlide)$oTimeSlider.slider('value', iNow);});// rest initialization$oVolSlider.slider({value: 1,orientation: 'vertical',range: 'min',max: 1,step: 0.02,animate: true,slide: function(e, ui) {$oVideo[0].muted = false;iVolume = ui.value;$oVideo[0].volume = ui.value;}});prepareTimeSlider();$oVideo.removeAttr('controls');});};
})(jQuery);

As you see – this is simple jQuery plugin. In the beginning – I have prepared all necessary controls and variables. Then – I have binded ‘onclick’ events to our controls, plus several inner events of video player (like ‘ended’ and ‘timeupdate’). After, I have implemented two jQueryUI sliders (time slider and volume slider). At the end – I have removed default controls: $oVideo.removeAttr(‘controls’); Generally – thats all.

如您所见–这是简单的jQuery插件。 在开始时,我已经准备了所有必需的控件和变量。 然后–我将“ onclick”事件绑定到我们的控件,以及视频播放器的多个内部事件(如“ end”和“ timeupdate”)。 之后,我实现了两个jQueryUI滑块(时间滑块和音量滑块)。 最后,我删除了默认控件:$ oVideo.removeAttr('controls'); 通常-仅此而已。

步骤4.图片 (Step 4. Images)

For our html5 video player I have used next images:

对于我们的html5视频播放器,我使用了下一张图片:

现场演示

结论 (Conclusion)

Hope that today’s html5 tutorial was great. We have made another one nice html5 example. I will be glad to see your thanks and comments. Good luck!

希望今天的html5教程很棒。 我们又做了一个很好的html5示例。 看到您的感谢和评论,我将非常高兴。 祝好运!

翻译自: https://www.script-tutorials.com/html5-video-player-jquery-plugin/

HTML5视频播放器jQuery插件相关推荐

  1. HTML5 视频播放器 WordPress插件

    HTML5 视频播放器 WordPress插件. 插件特点:3个类型的播放列表效果,5个皮肤可选,支持 .MP4 和.WEBM ,自动隐藏控制条,海报图像,播放列表图像,支持音量控制,可以添加视频描述 ...

  2. php h5视频播放器,基于JSON数据HTML5视频播放器js插件

    frame-player是一款基于JSON数据HTML5视频播放器js插件.该插件没有使用视频文件,只使用JSON格式的数据.在移动手机设备上使用图片帧的形式来播放视频文件. HTML5视频文件的一个 ...

  3. 解决无法在哔哩哔哩(b站)上使用HTML5视频播放器脚本插件/油猴等插件失效的问题

    文章目录 1.问题描述 2.解决方法 3.推荐使用视频插件 简介 特性 附:[快捷键](https://github.com/xxxily/h5player#%E5%BF%AB%E6%8D%B7%E9 ...

  4. 基于JSON数据HTML5视频播放器js插件

    点击打开链接http://www.htmleaf.com/html5/yinpinheshipin/201505261910.html 点击打开链接https://github.com/vagnerv ...

  5. html5播放器 迅雷,搜狗浏览器HTML5视频播放器插件(HTML5.Video.Player)

    一款搜狗浏览器的HTML5视频播放器插件,安装后可以使用HTML5方式播放优酷.土豆.爱奇艺.搜狐视频.迅雷离线.腾讯视频.56视频等网站的视频,避免使用adobe flash player插件,降低 ...

  6. 在线html5视频播放器,分享10款最棒的免费HTML5视频播放器

    最近Web圈子里最让人激动地莫过于HTML5了,特别是HTML5视频,使用HTML5视频标签可以帮助我们解决困扰我们很长时间的网站视频插入问题.HTML5可以在没有flash的情况下播放视频.现在有很 ...

  7. 15个最佳HTML5视频播放器

    随着YouTube最近的一项政策变化,即要求创作者在获得广告收入之前必须达到10,000次观看,因此我们看到了YouTube黄金时代的落日. 现在,比以往任何时候都更需要推动创意者开发自己的视频平台并 ...

  8. html选择本地文件视频并播放器,使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file)...

    使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file) 在播放视频时,我无法让HTML5播放器播放不同的视频,我尝试更改 ...

  9. jqm视频播放器,html5视频播放器,html5音乐播放器,html5播放器,video开发demo,html5视频播放示例,html5手机视频播放器

    最近在论坛中看到了很多实用html5开发视频播放,音乐播放的功能,大部分都在寻找答案.因此我就在这里做一个demo,供大家相互学习.html5开发越来越流行了,而对于视频这一块也是必不可少的一部分.如 ...

最新文章

  1. Rocksdb 通过ingestfile 来支持高效的离线数据导入
  2. 《浪潮之巅》作者吴军最新演讲:超级人工智能
  3. 2018网站信息系统安全等级保护限期整改通知书的处理解决方案
  4. 压缩,解压文件|*.tar.gz/.tar.bz2 文件
  5. ansible playbook实战——下发部署nginx以及更新、回滚
  6. CRM是什么?我心中理想的CRM形态
  7. 使用PowerDesigner做数据库设计(二)
  8. java分页的工具类,java分页工具类
  9. 【HDU - 3328】Flipper (栈模拟)
  10. 什么是 “马太效应” ?
  11. MATLAB_排列组合_组合生成程序
  12. 你留言,我送书!20本《玩转Python轻松过二级》等你拿!
  13. 浅谈浏览器的编码与解码过程
  14. 《解读基金》 基金中统计指标含义-平均回报、标准差、夏普比率、阿尔法系数、贝塔系数、R平方
  15. 百度分享代码--一键分享Baidu Share BEGIN
  16. Supervisely 人像分割数据集
  17. 企鹅公司为企业与单位推出的一款基于其业务交流平台,该款企业微信mac版可以很轻松的进行企业级沟通
  18. c语言中鱼贯指针的编程题,泡面吧 IT宅男如何打造编程教学网站
  19. MPLS及LDP协议基础(转载)
  20. Ui自动化概念+Web自动化测试框架介绍

热门文章

  1. 安装及配置JDK/JRE
  2. 微服务 分布式配置中心Apollo详解
  3. 1688关键字搜索商品
  4. 【IDEA】idea插件的安装和删除
  5. mysql事务使用转化_Mysql事务
  6. Android项目实战--手机卫士
  7. JavaWeb JavaBean,MVC三层架构
  8. ubuntu 登录界面卡死解决方法
  9. hdu6194 string string string
  10. perl调用其他的perl_Perl可能是老派,但它继续吸引新用户