Video.js事件
备份一个JS,不是为了代码很优秀,而是。。。想直接用里面的事件,就当成参考了:
- var media_events=new Array();
- // was extracted from the spec in November 2011
- media_events["loadstart"]=0;
- media_events["progress"]=0;
- media_events["suspend"]=0;
- media_events["abort"]=0;
- media_events["error"]=0;
- media_events["emptied"]=0;
- media_events["stalled"]=0;
- media_events["loadedmetadata"]=0;
- media_events["loadeddata"]=0;
- media_events["canplay"]=0;
- media_events["canplaythrough"]=0;
- media_events["playing"]=0;
- media_events["waiting"]=0;
- media_events["seeking"]=0;
- media_events["seeked"]=0;
- media_events["ended"]=0;
- media_events["durationchange"]=0;
- media_events["timeupdate"]=0;
- media_events["play"]=0;
- media_events["pause"]=0;
- media_events["ratechange"]=0;
- media_events["volumechange"]=0;
- var media_controller_events=new Array();
- // was extracted from the spec in November 2011
- media_controller_events["emptied"]=0;
- media_controller_events["loadedmetadata"]=0;
- media_controller_events["loadeddata"]=0;
- media_controller_events["canplay"]=0;
- media_controller_events["canplaythrough"]=0;
- media_controller_events["playing"]=0;
- media_controller_events["ended"]=0;
- media_controller_events["waiting"]=0;
- media_controller_events["durationchange"]=0;
- media_controller_events["timeupdate"]=0;
- media_controller_events["play"]=0;
- media_controller_events["pause"]=0;
- media_controller_events["ratechange"]=0;
- media_controller_events["volumechange"]=0;
- // was extracted from the spec in November 2011
- var media_properties=[ "error","src","currentSrc","crossOrigin","networkState","preload","buffered","readyState","seeking","currentTime","initialTime","duration","startOffsetTime","paused","defaultPlaybackRate","playbackRate","played","seekable","ended","autoplay","loop","mediaGroup","controller","controls","volume","muted","defaultMuted","audioTracks","videoTracks","textTracks","width","height","videoWidth","videoHeight","poster" ];
- var media_properties_elts=null;
- var webm=null;
- function init(){
- document._video=document.getElementById("video");
- webm=document.getElementById("webm");
- init_events();
- init_properties();
- init_mediatypes();
- // properties are updated even if no event was triggered
- setInterval(update_properties,500);
- }
- document.addEventListener("DOMContentLoaded",init,false);
- function init_events(){
- for(key in media_events){
- document._video.addEventListener(key,capture,false);
- }
- var tbody=document.getElementById("events");
- var i=1;
- var tr=null;
- for(key in media_events){
- if(tr==null) tr=document.createElement("tr");
- var th=document.createElement("th");
- th.textContent=key;
- var td=document.createElement("td");
- td.setAttribute("id","e_"+key);
- td.innerHTML="0";
- td.className="false";
- tr.appendChild(th);
- tr.appendChild(td);
- if((i++%5)==0){
- tbody.appendChild(tr);
- tr=null;
- }
- }
- if(tr!=null) tbody.appendChild(tr);
- }
- function init_properties(){
- var tbody=document.getElementById("properties");
- var i=0;
- var tr=null;
- media_properties_elts=new Array(media_properties.length);
- do{
- if(tr==null) tr=document.createElement("tr");
- var th=document.createElement("th");
- th.textContent=media_properties[i];
- var td=document.createElement("td");
- td.setAttribute("id","p_"+media_properties[i]);
- var r=eval("document._video."+media_properties[i]);
- td.innerHTML=r;
- if(typeof(r)!="undefined"){
- td.className="true";
- }else{
- td.className="false";
- }
- tr.appendChild(th);
- tr.appendChild(td);
- media_properties_elts[i]=td;
- if((++i%3)==0){
- tbody.appendChild(tr);
- tr=null;
- }
- }while(i<media_properties.length);
- if(tr!=null) tbody.appendChild(tr);
- }
- function init_mediatypes(){
- var tbody=document.getElementById("m_video");
- var i=0;
- var tr=document.createElement("tr");
- var videoTypes=[ "video/ogg","video/mp4","video/webm" ];
- i=0;
- tr=document.createElement("tr");
- do{
- var td=document.createElement("th");
- td.innerHTML=videoTypes[i];
- tr.appendChild(td);
- }while(++i<videoTypes.length);
- tbody.appendChild(tr);
- i=0;
- tr=document.createElement("tr");
- if(!!document._video.canPlayType){
- do{
- var td=document.createElement("td");
- var support=document._video.canPlayType(videoTypes[i]);
- td.innerHTML='"'+support+'"';
- if(support==="maybe"){
- td.className="true";
- }else if(support===""){
- td.className="false";
- }
- tr.appendChild(td);
- }while(++i<videoTypes.length);
- tbody.appendChild(tr);
- }
- }
- function capture(event){
- media_events[event.type]=media_events[event.type]+1;
- for(key in media_events){
- var e=document.getElementById("e_"+key);
- if(e){
- e.innerHTML=media_events[key];
- if(media_events[key]>0) e.className="true";
- }
- }
- update_properties();
- }
- function update_properties(){
- var i=0;
- for(key in media_properties){
- var val=eval("document._video."+media_properties[key]);
- /*
- if (typeof val === "TimesRanges") {
- val = val.length + " TimeRanges";
- }
- */
- media_properties_elts[i++].innerHTML=val;
- }
- if(!!document._video.audioTracks){
- var td=document.getElementById("m_audiotracks");
- td.innerHTML=document._video.audioTracks.length;
- td.className="true";
- }
- if(!!document._video.videoTracks){
- var td=document.getElementById("m_videotracks");
- td.innerHTML=document._video.videoTracks.length;
- td.className="true";
- }
- if(!!document._video.textTracks){
- var td=document.getElementById("m_texttracks");
- td.innerHTML=document._video.textTracks.length;
- td.className="true";
- }
- }
- var videos=new Array();
- videos[0]=[
- "http://media.w3.org/2010/05/sintel/poster.png","http://media.w3.org/2010/05/sintel/trailer.mp4","http://media.w3.org/2010/05/sintel/trailer.ogv","http://media.w3.org/2010/05/sintel/trailer.webm"
- ];
- videos[1]=[
- "http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/trailer.mp4","http://media.w3.org/2010/05/bunny/trailer.ogv"
- ];
- videos[2]=[
- "http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/movie.mp4","http://media.w3.org/2010/05/bunny/movie.ogv"
- ];
- videos[3]=[
- "http://media.w3.org/2010/05/video/poster.png","http://media.w3.org/2010/05/video/movie_300.mp4","http://media.w3.org/2010/05/video/movie_300.ogv","http://media.w3.org/2010/05/video/movie_300.webm"
- ];
- function switchVideo(n){
- if(n>=videos.length) n=0;
- var mp4=document.getElementById("mp4");
- var ogv=document.getElementById("ogv");
- var parent=ogv.parentNode;
- document._video.setAttribute("poster",videos[n][0]);
- mp4.setAttribute("src",videos[n][1]);
- ogv.setAttribute("src",videos[n][2]);
- if(videos[n][3]){
- if(webm.parentNode==null){
- parent.insertBefore(webm,ogv);
- }
- webm.setAttribute("src",videos[n][3]);
- }else{
- if(webm.parentNode!=null){
- parent.removeChild(webm);
- }
- }
- document._video.load();
- }
这一段JS是从http://www.w3.org/2010/05/video/mediaevents.html拷贝而来,具体的演示就在这个页面了。我是想知道video标签中的一些事件。controller_event几乎用不到。 中文说明这里有:http://directguo.com/blog/index.php/2010/07/html5-audio-video-tag/
- //错误状态
- Media.error; //null:正常
- Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效
- //网络状态
- Media.currentSrc; //返回当前资源的URL
- Media.src = value; //返回或设置当前资源的URL
- Media.canPlayType(type); //是否能播放某种格式的资源
- Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
- Media.load(); //重新加载src指定的资源
- Media.buffered; //返回已缓冲区域,TimeRanges
- Media.preload; //none:不预载 metadata:预载资源信息 auto:
- //准备状态
- Media.readyState; //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA
- Media.seeking; //是否正在seeking
- //回放状态
- Media.currentTime = value; //当前播放的位置,赋值可改变位置
- Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0
- Media.duration; //当前资源长度 流返回无限
- Media.paused; //是否暂停
- Media.defaultPlaybackRate = value;//默认的回放速度,可以设置
- Media.playbackRate = value;//当前播放速度,设置后马上改变
- Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文
- Media.seekable; //返回可以seek的区域 TimeRanges
- Media.ended; //是否结束
- Media.autoPlay; //是否自动播放
- Media.loop; //是否循环播放
- Media.play(); //播放
- Media.pause(); //暂停
- //控制
- Media.controls;//是否有默认控制条
- Media.volume = value; //音量
- Media.muted = value; //静音
- //TimeRanges(区域)对象
- TimeRanges.length; //区域段数
- TimeRanges.start(index) //第index段区域的开始位置
- TimeRanges.end(index) //第index段区域的结束位置
借鉴一下。
Video.js事件的更多相关文章
- video.js使用教程API
videojs就提供了这样一套解决方案,他是一个兼容html5的视频播放工具,早期版本兼容所有浏览器,方法是:提供三个后缀名的视频,并在不支持html5的浏览器下生成一个flash的版本. 最新的3. ...
- 使用 video.js 开发 HTML5 视频页面
时间 2015-05-13 17:11:58 The GIS Guy 原文 http://thegisguy.tk/html5-video-using-video-js/ 主题 Video.js H ...
- 【HTML5】HTML5中video元素事件详解(实时监测当前播放时间)
html 代码..video后边几个元素,可处理ios 系统的兼容性 <video id="myVideo" controls="controls" po ...
- Video.js web视频播放器
免费视频播放器videojs中文教程 Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于vide ...
- Video.js 简单的使用介绍
vedio.js 是一款视频播放插件,它会自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器.下面来介绍下它的使用: 引用video-js.cs样式文件和 ...
- video.js视频播放器
免费视频播放器videojs中文教程 Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于vide ...
- [HTML5和Flash视频播放器]Video.js 学习笔记(一 ) HLS库:videojs-contrib-hls
DEMO地址:https://github.com/Tinywan/PHP_Experience https://github.com/videojs/videojs-contrib-hls 下载JS ...
- HTML5视频播放插件 video.js介绍
video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/ git& ...
- js插件---video.js如何使用
js插件---video.js如何使用 一.总结 一句话总结:还是要去官方网站去看英文文档.快点把英语学好啊. 1.如何快速使用这些插件(比如video.js)? 直接百度这些js如何使用就可以了,这 ...
随机推荐
- VMware 虚拟机下载链接
VMware 14 链接: https://pan.baidu.com/s/1mBeyX2Z6hGpbFc8_UC-sEw 提取码: 462t 密钥:AA510-2DF1Q-H882Q-XFPQE-Q ...
- SystemTap使用技巧 1 - 4 非常重要
http://blog.csdn.net/wangzuxi/article/details/42849053
- KernelHacking
https://kernelnewbies.org/KernelHacking-HOWTO/Debugging_Kernel
- 深入GCD(三): Dispatch Sources
何为Dispatch Sources简单来说,dispatch source是一个监视某些类型事件的对象.当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中.说的 ...
- 【kotlin】基本语法when的使用,类似于java中的switch,但是又青出于蓝而胜于蓝
when(要判断的参数){ 参数值为1 ->做这种事情 参数值为2 ->做另一种事情 else -> 类似于switch中的default } 扩展使用:https://www.cn ...
- 【Todo】ES6学习
今天部分分享,有一篇PPT,放在这里了 /Users/baidu/Documents/Data/Work/分享资料/ES6大法好.pptx 内容挺丰富的,可以学习.
- 【前端JS】radio 可单选可点击取消选中
普通情况下 radio 单选框仅仅能实现多选一的效果,可是一旦选择当中一个后,这个单选框就不可点击取消其选中状态了.这样的功能在某些业务环境下并不适用.有时我们既须要单选框的多选一效果.也须要复选框的 ...
- Hdu3785
<span style="color:#6600cc;">/* G - 寻找大富翁 Time Limit:1000MS Memory Limit:32768KB 64b ...
- EF(Entity Framework)通用DBHelper通用类,增删改查以及列表
其中 通用类名:DBhelper 实体类:UserInfo 1 //新增 2 DBHelper<UserInfo> dbhelper = new DBHelper<UserInfo& ...
- DRF 之 版本控制
1.版本控制是干什么用的,为什么要有版本? 我们都知道每一个程序都是有版本的.而且版本也会升级从v1升级到v2.v3.v4·····,但是我们不可能因为新版本出现旧版本就不去维护,因为用户有权选择不更 ...