h5-自定义视屏播放器

1.html代码

 1 <h3 class="playerTitle">视屏播放器</h3>
 2 <div class="player">
 3     <video src="../mp4/chrome.mp4"></video>
 4     <div class="controls">
 5         <!--比如这里的开始和暂停图标就是font-awesome.css文件中的图标-->
 6         <a href="javascript:;" class="switch fa fa-play"></a>
 7         <a href="javascript:;" class="expand fa fa-expand"></a>
 8         <div class="progress">
 9             <div class="bar"></div>
10             <div class="loaded"></div>
11             <div class="elapse"></div>
12         </div>
13         <div class="time">
14             <span class="currentTime">00;00:00</span>
15             16             <span class="totalTime">00;00:00</span>
17         </div>
18     </div>
19 </div>

2.引入两个css文件

1     <!--可以直接进入:http://www.fontawesome.com.cn/  进行下载font-awesome.css文件
2     font-awesome.css文件,该文件是一个字体图标文件,在网站中点击:实际是专用入口就
3     会显示各种各样的图标,点击图标即可看见时间该图标的代码-->
4     <link rel="stylesheet" href="../css/font-awesome.css">
5     <link rel="stylesheet" href="../css/css.css">

css.css是视屏播放器的基本样式

  1 body{
  2     padding: 0;
  3     margin: 0;
  4     font-family: ‘microsoft yahei‘,‘Helvetica‘,simhei,simsun,sans-serif;
  5     background-color: #f7f7f7;
  6 }
  7
  8 a{
  9     text-decoration: none;
 10 }
 11
 12 .playerTitle{
 13     width: 100%;
 14     margin: 0 auto;
 15     line-height: 100px;
 16     font-size: 40px;
 17     text-align: center;
 18 }
 19 .player{
 20     width: 720px;
 21     height: 360px;
 22     margin: 0 auto;
 23     background: url("../img/loading.gif") center no-repeat;
 24     background-size: cover;
 25     position: relative;
 26 }
 27 video{
 28     height: 100%;
 29     margin: 0 auto;
 30     display: none;
 31 }
 32 .controls{
 33     width: 720px;
 34     height: 40px;
 35     position: absolute;
 36     left: 0px;
 37     bottom: -40px;
 38     background-color: #000;
 39 }
 40 .controls > .switch{
 41     width: 20px;
 42     height: 20px;
 43     display: block;
 44     font-size: 20px;
 45     color: #fff;
 46     position: absolute;
 47     left: 10px;
 48     top: 10px;
 49 }
 50 .controls > .expand{
 51     width: 20px;
 52     height: 20px;
 53     display: block;
 54     font-size: 20px;
 55     color: #fff;
 56     position: absolute;
 57     right: 10px;
 58     top: 10px;
 59 }
 60 .controls > .progress{
 61     width: 430px;
 62     height: 10px;
 63     position: absolute;
 64     left: 40px;
 65     bottom: 15px;
 66     background-color: #555;
 67 }
 68 .controls > .progress > .bar{
 69     width: 100%;
 70     height: 100%;
 71     border-radius: 3px;
 72     cursor: pointer;
 73     position: absolute;
 74     left: 0;
 75     top: 0;
 76     opacity: 0;
 77     z-index: 999;
 78 }
 79 .controls > .progress > .loaded{
 80     width: 60%;
 81     height: 100%;
 82     background-color: #999;
 83     order-radius: 3px;
 84     position: absolute;
 85     left: 0;
 86     top: 0;
 87     z-index: 2;
 88 }
 89 .controls > .progress > .elapse{
 90     width: 0%;
 91     height: 100%;
 92     background-color: #fff;
 93     order-radius: 3px;
 94     position: absolute;
 95     left: 0;
 96     top: 0;
 97     z-index: 3;
 98 }
 99 .controls > .time{
100     height: 20px;
101     position: absolute;
102     left: 490px;
103     top: 10px;
104     color: #fff;
105     font-size: 14px;
106 }

3.最主要的功能实现

 1 <script src="../js/jquery-1.7.min.js"></script>
 2 <script>
 3     /*通过jq来实现功能*/
 4     $(function () {
 5         /*1.获取播放器*/
 6         var video = $("video")[0];
 7
 8         /*2.实现播放与暂停*/
 9         $(".switch").click(function () {
10             /*实现播放暂停的切换:如若是暂停》播放  如果是播放》暂停*/
11             if (video.paused) {
12                 video.play();
13                 /*移除暂停样式,添加播放样式*/
14             }else{
15                 video.pause();
16                 /*移除播放样式,添加暂停样式*/
17             }
18             /*设置标签的样式  fa-pause:暂停   fa-play:播放样式*/
19             $(this).toggleClass("fa-play fa-pause");
20         });
21
22         /*3.实现全屏操作*/
23         $(".expand").click(function () {
24             if (video.requestFullscreen){
25                 video.requestFullscreen();
26             }else if (video.webkitRequestFullScreen){
27                 video.webkitRequestFullScreen();
28             } else if (video.mozRequestFullScreen){
29                 video.mozRequestFullScreen();
30             } else if (video.msRequestFullScreen){
31                 video.msRequestFullScreen();
32             }
33         });
34
35         /*4.实现播放业务逻辑:当视屏文件可以播放时触发下面的事件*/
36         video.oncanplay=function () {
37             setTimeout(function () {
38                 /*1.将视屏文件设置为显示*/
39                 video.style.display="block";
40                 /*2.获取当前视屏文件的总时长(以为作为单位,同时获取了小数值),计算出时分秒*/
41                 var total = video.duration;
42                 /*调用计算时间方法*/
43                 var result = getResult(total);
44                 /*4.将计算结果展示在指定的dom元素中*/
45                 $(".totalTime").html(result);
46             },2000);
47         }
48         /*通过总时长计算出时分秒*/
49         function getResult(time) {
50             /*3.计算时分秒  60*60=3600
51                 * 时:3700/3600
52                 * 分:3700%3600 >> 100/60
53                 * 秒:3700%60
54                 * */
55             var hour =Math.floor(time/3600);
56             /*补0操作*/
57             hour = hour<10?"0"+hour:hour;
58             var minute=Math.floor(time%3600/60);
59             minute=minute<10?"0"+minute:minute;
60             var second = Math.floor(time%60);
61             second=second<10?"0"+second:second;
62             return hour+":"+minute+":"+second;
63         }
64
65         /*5.实现播放过程中的业务逻辑,当时瓶播放时触发ontimeupdate事件
66         * 如果修改了currentTime值也会触发这个事件,说白了,就是是要currenTime值变化,就会触发这个事件
67         * */
68         video.ontimeupdate=function () {
69             /*1.获取当前的播放时间*/
70             var current=video.currentTime;
71             /*计算出时分秒*/
72             var result = getResult(current);
73             /*将结果展示在指定的dom元素中*/
74             $(".currentTime").html(result);
75             /*4.设置当前播放进度条样式*/
76             var percent=current/video.duration*100+"%";
77             $(".elapse").css("width",percent);
78
79         }
80
81         /*6.实现视屏地挑播*/
82         $(".bar").click(function (e) {
83             /*1.获取当前师表相对于父元素的left值--偏移值*/
84             var offset=e.offsetX;
85             /*2.计算偏移值相对总父元素总宽度的比例*/
86             var percent=offset/$(this).width();
87             /*3.计算这个位置对应的视频进度之*/
88             var current=percent*video.duration;
89             /*设置当前视频的currentTime*/
90             video.currentTime=current;
91         })
92
93         /*7.播放完毕之后,重置播放器的状态*/
94         video.onended=function () {
95             video.currentTime=0;
96             $(".switch").removeClass("fa-pauser").addClass("fa-play");
97         };
98     });
99 </script>

原文地址:https://www.cnblogs.com/FengBrother/p/11373297.html

时间: 2024-10-03 13:38:58

h5-自定义视屏播放器的相关文章

Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器

效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在SurfaceView中放置一个MediaPlayer ,在其下方自定义一个MediaController,不过也不能称之为MediaController,使用的是PupupWindow来实现的,在PupupWindow布局中放置几个textView,Button,最重要的使我们的SeekBar控件,创

android 下的一段视屏播放的逻辑

android 下的一段视屏播放的逻辑只是Activity的一部分逻辑源码 DemoActivity: public class DemoActivity extends Activity implements OnClickListener { EditText et_path; Button bt_start; Button bt_pause; Button bt_restart; Button bt_stop; SurfaceView sv; SurfaceHolder holder; M

简单的多屏播放器示例(vlc+qt)

简单的多屏播放器示例(vlc+qt) 介绍 简单的多屏播放器 最多同时播放16个视频 支持本地文件和rtsp.rtmp等流媒体播放 VS2015工程,依赖Qt+VLC 练手作品 截图 下载 程序:download.csdn.net/detail/u014755412/9908787 源码:github.com/FutaAlice/QtPlayer 代码分析 IMediaPlayer是为规定接口的基类 提供了播放和控制的几个常用函数 其中打开媒体部分拆分为了OpenURL和OpenFile,并在c

H5+Boostrap的音乐播放器

H5+Boostrap做简单的音乐播放器 前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是jQuery的源码和Boostrap.js的源码,任务很艰巨呢,加油~在此就不整篇的贴代码了,如果感兴趣的小伙伴可以发消息给我,可以把代码传给你们~ 正文: 先上效果图 1.布局:Boostrap里的响应式和自适应布局是自然跑不掉的,container中嵌套r

优酷,迅雷视屏播放接口

优酷:优酷的视频播放器接口连接为:http://open.youku.com/tools/ 里面已经有教详细的说明了.在这里也做一些说明吧:导入js文件: 1 <script type="text/javascript" src="http://player.youku.com/jsapi"> 调用: 1 <script type="text/javascript"> 2 player = new YKU.Player('

利用vitamio Mediaplayer 自定义了一个播放器

本人android初学者,学习了Vitamio Mediaplayer 的Demo,参考了农民伯伯大牛的文章,具体链接如下: http://www.cnblogs.com/over140/archive/2012/05/22/2473019.html 实现了简单的功能:双击屏幕切换,点击显示进度条,暂停和播放.自己记录下,许多地方还有待优化的部分,请大家指点哈. 手机拍摄的真机效果不好请大家原谅 显示效果: 首先是XML布局: 这里增加了进度,播放,暂停等组件 <?xml version="

视屏播放

-(void)playMovie:(NSString *)fileName{ //视频文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mp4"]; //视频URL NSURL *url = [NSURL fileURLWithPath:path]; //视频播放对象 MPMoviePlayerController *movie = [[MPMoviePlayerControll

第八章 多媒体音视屏播放

<!-- 读取外部储存(sdcard)权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> ===============================音频的播放====================================== MediaPlayer类:可以处理音频,和视频. MediaPlayer mp = new MediaPlayer

前端web页面通过VUE集成H5直播、点播播放器LivePlayer

基于VUE和webpck的前端工程 这里可以参考 https://github.com/livegbs/GB28181-Server 1.安装@liveqing/liveplayer npm -i @liveqing/liveplayer --save-dev 2.webpack.config.js 添加配置 这里是配置webpack自动copy,当然也可以手动复制到待发布的web目录,如www .... const CopyWebpackPlugin = require('copy-webpa