用javascript做一个视频播放器
以前我们在网页上播放视频,都是要麻烦flash来实现。看着那一大段的<object>真心觉得累。随着html5的不断普及,现在是时候使用html5提供的video元素来做点正经事了,但是要把界面打造的更加个性一点,需要一点javascript和一点css.如果能再加一个漂亮的美工,那就完全不在话下了。在项目早些时候
我们是通过phoneGap提供的插件实现的视频播放,但是有一个问题,翻页的时候,视频没有跟着一起动,感觉就是脱离了页面。后来采用video
来播放就可以一起移动了,但是它的默认样式与我们的项目风格太不协调了。于是我就查了一下video的api 进行了自定义。具体代码稍后贴出,也可以从我的git上下载。
下面展示一下效果:

界面有点简单,甚至可以说比较丑。这只能说美工不给力,但是作为一个demo,我想控制的
开关,进度条,时间等,都可以进行自定义,这就足够了。如果你觉得有兴趣,不妨看下后面的源码,超级
简单:
(function(){
var video = document.querySelector('video');
var VideoBox = video.parentNode.children[1];
var mediaLength = 500;
var pauseTime = 0;
//播放事件
var play = function() {
video.play();
powerBtn.className = 'StopControl';
timeSpan();
}
//暂停事件
var pause = function() {
video.pause();
powerBtn.className = 'MainControl';
pauseTime = video.currentTime;
}
/*开关按钮*/
var powerBtn = VideoBox.children[0];
/*监听开关事件*/
powerBtn.addEventListener('click',function(e){
video.paused ? play() : pause();
},false);
//进度条
var DomProcess = VideoBox.children[1].children[1];
//进度条长度增加
DomProcess.addEventListener('click',function(e){
var left = this.getBoundingClientRect().left;
var length = e.clientX - left;
durationProcessRange(length / mediaLength);
},false);
//进度条长度减少
var DomProcessYet = VideoBox.children[1].children[2];
DomProcessYet.addEventListener('click',function(e){
var left = this.getBoundingClientRect().left;
var length = e.clientX - left;
durationProcessRange(length / mediaLength);
},false);
//响应播放进度条变化
function durationProcessRange(rangeVal) {
video.currentTime = rangeVal * video.duration;
video.play();
}
//监听播放完成事件
video.addEventListener('ended', function () {
powerBtn.className = 'MainControl';
},false);
//时间进度处理程序
function timeSpan() {
var total = timeDispose(video.duration);
var ProcessYet = 0;
setInterval(function () {
var ProcessYet = (video.currentTime / video.duration) * mediaLength;
DomProcessYet.style.width = ProcessYet + 'px';
var currentTime = timeDispose(video.currentTime);
var SongTime = VideoBox.children[1].children[0];
SongTime.innerHTML = currentTime + " | " + total;
}, 1000);
}
//时间处理,因为时间是以s为单位算的,所以这边执行格式处理一下
function timeDispose(number) {
var minute = parseInt(number / 60);
var second = parseInt(number % 60);
minute = minute >= 10 ? minute : "0" + minute;
second = second >= 10 ? second : "0" + second;
return minute + ":" + second;
}
})();
不过由于安卓上对video的实现不是很完整,还是保留了用phoneGap播放,苹果和PC采用video播放。
需要指出的是,苹果上的iphone是不允许我们对video的界面元素进行控制的,只能用默认的风格。
此外呢,html5的video元素,对视频格式也有要求,具体查看w3c的说明文档。
有兴趣尝试一下的,可以自己写或从以下地址下载源码:
https://github.com/bjtqti/xxt/tree/master/html5
另外有一个叫videojs的网站上,有完整的实现。只是体积太大,不介意的可以直采用。
用javascript做一个视频播放器的更多相关文章
- 做一个视频播放器在没开始播放的时候有一张图片实际上就是拿一张图片盖住视频承载的屏幕当出发。play的时候图片隐藏 img
saxda 某个元素.style.class='';也可以是.className <!DOCTYPE html><html lang="en"><he ...
- Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)
项目地址https://github.com/979451341/Myijkplayer 前段时候我觉得FFmpeg做个视频播放器好难,虽然播放上没问题,但暂停还有通过拖动进度条来设置播放进度,这些都 ...
- 记一个视频播放器插件 video.js
最近在看扣丁学堂上面的一些视频, 突然对他用的视频播放器有点兴趣, 他也是采用的 ts切片播放, 如果使用传统的video标签是无法实现的 他使用的插件叫做 video.js 官网地址 官网提供的播放 ...
- 使用Canvas和JavaScript做一个画板
本文同步于个人博客:https://zhoushuo.me/blog/2018/03/11/drawing-borad/ 前些天学习了HTML5的<canvas>元素,今天就来实践一下,用 ...
- html,CSS,javascript 做一个弹窗
弹窗的工作原理:在网页中写一个div ,布局到想要显示的位置,将display设为none,隐藏该div.然后通过点击事件或其他操作,利用Js代码,将display设置为block,将div 显示到网 ...
- 如何用JavaScript做一个可拖动的div层
可拖动的层在Web设计中用处很多,比如在某些需要自定义风格布局的应用中,控件就需要拖动操作,下面介绍一个,希望可以满足你的需求,顺便学习一下可拖动的层是如何实现的. 下面是效果演示: 这个DIV可以移 ...
- C#调用VlcControl做一个播放器
开发环境: Visual Studio 2015 .Net Framework 4.5 1.新建一个Windows窗体应用程序 修改框架为.Net Framework 4.5 2.管理NuGet包 下 ...
- 用Javascript做一个“获取验证码”的按钮
要求:①点击按钮后背景色会发生改变②有倒计时(一般为30秒) <!DOCTYPE HTML> <html> <head> <meta charset=&quo ...
- 用JavaScript做一个小小设计
这个项目是我无聊时完成的,参阅过很多大神的示例,其实方法并不难主要是js和css样式的设计,我发现自己还有很多的js代码写不出来更加不用提看的明白了,(PS吐槽一下:革命尚未成功,同志还需努力啊!)此 ...
随机推荐
- iOS开发资源(持续更新)
vm10虚拟机安装Mac OS X10.10教程 马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today) Xcode使用教程详细讲解 (上) Xcode使用 ...
- UITextView 点击添加文字 光标处于最后方
#import "ViewController.h" @interface ViewController ()<UITextViewDelegate> @end @im ...
- 选择列表中除了第一个li的其他元素
//选择div中除了第一个li的其他所以li元素 div li:not(:first-child){ }
- oracle统计用户下面所有的表,并显示每个表的行数
declare t_count number(10); t_str VARCHAR2(500); cursor t_tables is select table_name from user ...
- 安装OS X虚拟机错误vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
新建一个虚拟机, 选择客户机操作系统为Apple MacOS X 10.10, 其余参数可以默认. 注意建好之后不要急着打开客户机, 因为直接打开你会发现新建的客户机将会无法启动. 仔细阅读Mac O ...
- USACO翻译:USACO 2012 JAN三题(2)
USACO 2012 JAN(题目二) 一.题目概览 中文题目名称 叠干草 分干草 奶牛联盟 英文题目名称 stacking baleshare cowrun 可执行文件名 stacking bale ...
- Mac上开启Web服务
$ sudo apachectl start$ httpd -v /Library/WebServer/Documents
- 通过Javascript得到URL中的参数(query string)
我们知道,"GET"请求中,通常把参数放在URL后面,比如这样http://www.cnblogs.com/season-huang/index?param=yes&art ...
- 性能计数器与profiler的组合性能诊断
性能计数器和sql profiler都是常用的性能诊断工具和优化工具,最近和群友聊天发现很多人竟然不知道这两个可以“组合”使用,所以这篇算是一篇扫盲贴吧. 两种工具简述 通过计数器可以收集两部分内容: ...
- 【腾讯Bugly干货分享】微信小程序开发思考总结——腾讯“信用卡还款”项目实践
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/58212d0fa7a7574c4f4cc3c5 作者:peggy 小程序概述 1 ...