作者: gouki
2012-02-16 17:58

备份一个JS,不是为了代码很优秀,而是。。。想直接用里面的事件,就当成参考了:

JavaScript代码
  1. var media_events=new Array();
  2. // was extracted from the spec in November 2011
  3. media_events["loadstart"]=0;
  4. media_events["progress"]=0;
  5. media_events["suspend"]=0;
  6. media_events["abort"]=0;
  7. media_events["error"]=0;
  8. media_events["emptied"]=0;
  9. media_events["stalled"]=0;
  10. media_events["loadedmetadata"]=0;
  11. media_events["loadeddata"]=0;
  12. media_events["canplay"]=0;
  13. media_events["canplaythrough"]=0;
  14. media_events["playing"]=0;
  15. media_events["waiting"]=0;
  16. media_events["seeking"]=0;
  17. media_events["seeked"]=0;
  18. media_events["ended"]=0;
  19. media_events["durationchange"]=0;
  20. media_events["timeupdate"]=0;
  21. media_events["play"]=0;
  22. media_events["pause"]=0;
  23. media_events["ratechange"]=0;
  24. media_events["volumechange"]=0;
  25. var media_controller_events=new Array();
  26. // was extracted from the spec in November 2011
  27. media_controller_events["emptied"]=0;
  28. media_controller_events["loadedmetadata"]=0;
  29. media_controller_events["loadeddata"]=0;
  30. media_controller_events["canplay"]=0;
  31. media_controller_events["canplaythrough"]=0;
  32. media_controller_events["playing"]=0;
  33. media_controller_events["ended"]=0;
  34. media_controller_events["waiting"]=0;
  35. media_controller_events["durationchange"]=0;
  36. media_controller_events["timeupdate"]=0;
  37. media_controller_events["play"]=0;
  38. media_controller_events["pause"]=0;
  39. media_controller_events["ratechange"]=0;
  40. media_controller_events["volumechange"]=0;
  41. // was extracted from the spec in November 2011
  42. 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" ];
  43. var media_properties_elts=null;
  44. var webm=null;
  45. function init(){
  46. document._video=document.getElementById("video");
  47. webm=document.getElementById("webm");
  48. init_events();
  49. init_properties();
  50. init_mediatypes();
  51. // properties are updated even if no event was triggered
  52. setInterval(update_properties,500);
  53. }
  54. document.addEventListener("DOMContentLoaded",init,false);
  55. function init_events(){
  56. for(key in media_events){
  57. document._video.addEventListener(key,capture,false);
  58. }
  59. var tbody=document.getElementById("events");
  60. var i=1;
  61. var tr=null;
  62. for(key in media_events){
  63. if(tr==null) tr=document.createElement("tr");
  64. var th=document.createElement("th");
  65. th.textContent=key;
  66. var td=document.createElement("td");
  67. td.setAttribute("id","e_"+key);
  68. td.innerHTML="0";
  69. td.className="false";
  70. tr.appendChild(th);
  71. tr.appendChild(td);
  72. if((i++%5)==0){
  73. tbody.appendChild(tr);
  74. tr=null;
  75. }
  76. }
  77. if(tr!=null) tbody.appendChild(tr);
  78. }
  79. function init_properties(){
  80. var tbody=document.getElementById("properties");
  81. var i=0;
  82. var tr=null;
  83. media_properties_elts=new Array(media_properties.length);
  84. do{
  85. if(tr==null) tr=document.createElement("tr");
  86. var th=document.createElement("th");
  87. th.textContent=media_properties[i];
  88. var td=document.createElement("td");
  89. td.setAttribute("id","p_"+media_properties[i]);
  90. var r=eval("document._video."+media_properties[i]);
  91. td.innerHTML=r;
  92. if(typeof(r)!="undefined"){
  93. td.className="true";
  94. }else{
  95. td.className="false";
  96. }
  97. tr.appendChild(th);
  98. tr.appendChild(td);
  99. media_properties_elts[i]=td;
  100. if((++i%3)==0){
  101. tbody.appendChild(tr);
  102. tr=null;
  103. }
  104. }while(i<media_properties.length);
  105. if(tr!=null) tbody.appendChild(tr);
  106. }
  107. function init_mediatypes(){
  108. var tbody=document.getElementById("m_video");
  109. var i=0;
  110. var tr=document.createElement("tr");
  111. var videoTypes=[ "video/ogg","video/mp4","video/webm" ];
  112. i=0;
  113. tr=document.createElement("tr");
  114. do{
  115. var td=document.createElement("th");
  116. td.innerHTML=videoTypes[i];
  117. tr.appendChild(td);
  118. }while(++i<videoTypes.length);
  119. tbody.appendChild(tr);
  120. i=0;
  121. tr=document.createElement("tr");
  122. if(!!document._video.canPlayType){
  123. do{
  124. var td=document.createElement("td");
  125. var support=document._video.canPlayType(videoTypes[i]);
  126. td.innerHTML='"'+support+'"';
  127. if(support==="maybe"){
  128. td.className="true";
  129. }else if(support===""){
  130. td.className="false";
  131. }
  132. tr.appendChild(td);
  133. }while(++i<videoTypes.length);
  134. tbody.appendChild(tr);
  135. }
  136. }
  137. function capture(event){
  138. media_events[event.type]=media_events[event.type]+1;
  139. for(key in media_events){
  140. var e=document.getElementById("e_"+key);
  141. if(e){
  142. e.innerHTML=media_events[key];
  143. if(media_events[key]>0) e.className="true";
  144. }
  145. }
  146. update_properties();
  147. }
  148. function update_properties(){
  149. var i=0;
  150. for(key in media_properties){
  151. var val=eval("document._video."+media_properties[key]);
  152. /*
  153. if (typeof val === "TimesRanges") {
  154. val = val.length + " TimeRanges";
  155. }
  156. */
  157. media_properties_elts[i++].innerHTML=val;
  158. }
  159. if(!!document._video.audioTracks){
  160. var td=document.getElementById("m_audiotracks");
  161. td.innerHTML=document._video.audioTracks.length;
  162. td.className="true";
  163. }
  164. if(!!document._video.videoTracks){
  165. var td=document.getElementById("m_videotracks");
  166. td.innerHTML=document._video.videoTracks.length;
  167. td.className="true";
  168. }
  169. if(!!document._video.textTracks){
  170. var td=document.getElementById("m_texttracks");
  171. td.innerHTML=document._video.textTracks.length;
  172. td.className="true";
  173. }
  174. }
  175. var videos=new Array();
  176. videos[0]=[
  177. "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"
  178. ];
  179. videos[1]=[
  180. "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"
  181. ];
  182. videos[2]=[
  183. "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"
  184. ];
  185. videos[3]=[
  186. "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"
  187. ];
  188. function switchVideo(n){
  189. if(n>=videos.length) n=0;
  190. var mp4=document.getElementById("mp4");
  191. var ogv=document.getElementById("ogv");
  192. var parent=ogv.parentNode;
  193. document._video.setAttribute("poster",videos[n][0]);
  194. mp4.setAttribute("src",videos[n][1]);
  195. ogv.setAttribute("src",videos[n][2]);
  196. if(videos[n][3]){
  197. if(webm.parentNode==null){
  198. parent.insertBefore(webm,ogv);
  199. }
  200. webm.setAttribute("src",videos[n][3]);
  201. }else{
  202. if(webm.parentNode!=null){
  203. parent.removeChild(webm);
  204. }
  205. }
  206. document._video.load();
  207. }

这一段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/

XML/HTML代码
  1. //错误状态
  2. Media.error; //null:正常
  3. Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效
  4. //网络状态
  5. Media.currentSrc; //返回当前资源的URL
  6. Media.src = value; //返回或设置当前资源的URL
  7. Media.canPlayType(type); //是否能播放某种格式的资源
  8. Media.networkState; //0.此元素未初始化  1.正常但没有使用网络  2.正在下载数据  3.没有找到资源
  9. Media.load(); //重新加载src指定的资源
  10. Media.buffered; //返回已缓冲区域,TimeRanges
  11. Media.preload; //none:不预载 metadata:预载资源信息 auto:
  12. //准备状态
  13. Media.readyState;    //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA
  14. Media.seeking; //是否正在seeking
  15. //回放状态
  16. Media.currentTime = value; //当前播放的位置,赋值可改变位置
  17. Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0
  18. Media.duration; //当前资源长度 流返回无限
  19. Media.paused; //是否暂停
  20. Media.defaultPlaybackRate = value;//默认的回放速度,可以设置
  21. Media.playbackRate = value;//当前播放速度,设置后马上改变
  22. Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文
  23. Media.seekable; //返回可以seek的区域 TimeRanges
  24. Media.ended; //是否结束
  25. Media.autoPlay; //是否自动播放
  26. Media.loop; //是否循环播放
  27. Media.play();    //播放
  28. Media.pause();   //暂停
  29. //控制
  30. Media.controls;//是否有默认控制条
  31. Media.volume = value; //音量
  32. Media.muted = value; //静音
  33. //TimeRanges(区域)对象
  34. TimeRanges.length; //区域段数
  35. TimeRanges.start(index) //第index段区域的开始位置
  36. TimeRanges.end(index) //第index段区域的结束位置

借鉴一下。

标签: html5, video, audio

Powered by SaBlog-X (C) 2003-2005 Security Angel Team. XHTML 1.0

Video.js事件的更多相关文章

  1. video.js使用教程API

    videojs就提供了这样一套解决方案,他是一个兼容html5的视频播放工具,早期版本兼容所有浏览器,方法是:提供三个后缀名的视频,并在不支持html5的浏览器下生成一个flash的版本. 最新的3. ...

  2. 使用 video.js 开发 HTML5 视频页面

    时间 2015-05-13 17:11:58 The GIS Guy 原文  http://thegisguy.tk/html5-video-using-video-js/ 主题 Video.js H ...

  3. 【HTML5】HTML5中video元素事件详解(实时监测当前播放时间)

    html 代码..video后边几个元素,可处理ios 系统的兼容性 <video id="myVideo" controls="controls" po ...

  4. Video.js web视频播放器

    免费视频播放器videojs中文教程 Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于vide ...

  5. Video.js 简单的使用介绍

    vedio.js 是一款视频播放插件,它会自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器.下面来介绍下它的使用: 引用video-js.cs样式文件和 ...

  6. video.js视频播放器

    免费视频播放器videojs中文教程 Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于vide ...

  7. [HTML5和Flash视频播放器]Video.js 学习笔记(一 ) HLS库:videojs-contrib-hls

    DEMO地址:https://github.com/Tinywan/PHP_Experience https://github.com/videojs/videojs-contrib-hls 下载JS ...

  8. HTML5视频播放插件 video.js介绍

    video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/    git& ...

  9. js插件---video.js如何使用

    js插件---video.js如何使用 一.总结 一句话总结:还是要去官方网站去看英文文档.快点把英语学好啊. 1.如何快速使用这些插件(比如video.js)? 直接百度这些js如何使用就可以了,这 ...

随机推荐

  1. 解决maven无法下载依赖的jar包的问题

    背景: 公司内部有搭建maven私服,自己做了个核心jar包,一开始是xxx-core.1.0.0.SNAPSHOT版本,是本地和项目环境都可以正常使用的.为支持上线,发布稳定版本,xxx-core. ...

  2. VC++下编译Libgeotiff(含Libtiff)

    转自原文Win10+VC++下编译Libgeotiff(含Libtiff)详细图文教程 GeoTiff是包含地理信息的一种Tiff格式的文件.Libgeotiff就是一个操作GeoTiff文件的库.同 ...

  3. mysqldump 把数据库备份到异地的服务器

    原文:http://www.open-open.com/code/view/1420121471484 这个方法可以把通过mysqldump 把本地数据库备份到远端主机, 中间数据的传输通过 ssh ...

  4. 基于centos 创建一个stress镜像

    最近需要学习docker的Cgroups机制,需要用到stress进行测试,前期工作就是自己创建一个stress镜像. 新建一个 Dockerfile 文件 [vagrant@localhost ~] ...

  5. Linux驱动基础开发

    Linux 内核配置机制(make menuconfig.Kconfig.makefile)讲解 前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方 ...

  6. Js学习第十天----函数

    函数 什么是函数?函数是由事件驱动的或者当他被调用时运行的可反复使用代码块.预计没明确,个人觉得函数就是能完毕一个功能的代码块. 看个案例: <!DOCTYPE html> <htm ...

  7. Linux编程---进程通信

    Linux的通信方式主要有分类有以下几种: -匿名管道和FIFO有名管道 -消息队列,信号量和共享存储 -套接字 对于套接字的进程通信,我就留在套接字的文章中再写了. 一.管道 管道是最古老的进程通信 ...

  8. 面向对象五大原则_1.单一职责原则&amp;2.里氏替换原则

    单一职责原则:Single Responsibility Principle (SRP) 一个类.仅仅有一个引起它变化的原因.应该仅仅有一个职责.每个职责都是变化的一个轴线.假设一个类有一个以上的职责 ...

  9. Hadoop源代码分析(完整版)

    Hadoop源代码分析(一) 关键字: 分布式云计算 Google的核心竞争技术是它的计算平台.Google的大牛们用了下面5篇文章,介绍了它们的计算设施. GoogleCluster:http:// ...

  10. 如何解决Windows的端口占用问题?

    已知某应用在启动时会创建服务套接字,并将其绑定至端口8888,然而端口8888已被占用,如何解除占用? 以下为解决方案: 在cmd中运行netstat -ano|findstr 8888,其中的参数8 ...