1.参数

  video是h5的新特性(虽然新了很多年了),使得枯燥的页面有了很多生机。html代码示例:

  1. <video
  2. id="kingdom-video"
  3. src=""
  4. preload
  5. controls>
  6. </video>
  7. <video width="320" height="240" controls>
  8. <source src="/example/video/movie.mp4" type="video/mp4">
  9. <source src="/example/video/movie.ogg" type="video/ogg">
  10. 您的浏览器不支持Video标签。
  11. </video>

  可见,可以直接通过src指定播放媒体的网络路径,也可以使用source标签来进行指定。

  常用参数如下:

//autoplay 则视频在就绪后马上播放。
//controls 用户显示控件,比如播放按钮。
//width 频播放器的宽度。
//height 设置视频播放器的高度
//loop 文件完成播放后再次开始播放。
//preload 视频在页面加载时进行加载,并预备播放
// src 要播放的视频的 URL。

2.操作

  常用操作如下:
  1. var myVid=document.getElementById("video1"); //获取video 元素
  2. myVideo.play(); //播放视频
  3. myVideo.pause(); //暂停视频
  4. myVideo.width=560; //设置视频宽度
  5. myVideo.height=560; //设置视频高度
  6. 全屏:

chrome

  1. document.getElementById('video1').webkitRequestFullScreen()
  2. document.webkitCancelFullScreen();

Firefox

  1. document.getElementById('video1').mozRequestFullScreen();
  2. document.mozCancelFullScreen();

// W3C 提议

  1. document.getElementById('video1').requestFullscreen();
  2. document.exitFullscreen();

【css伪类】

:fullscreen – 当前全屏化的元素
:fullscreen-ancestor – 所有全屏化元素的祖先元素

3.完整的常用操作、事件

  1. var myVid=document.getElementById("video1");
  2. //播放的速度
  3. myVid.playbackRate = 1
  4. myVid.onloadstart = function(){
  5. console.log(`onloadstart 客户端开始请求数据 `);
  6. }
  7. myVid.ondurationchange=function(){
  8. console.log(`durationchange 资源长度改变 `);
  9. }
  10. myVid.onratechange=function(){
  11. console.log(`onratechange //播放速率改变 `);
  12. }
  13. myVid.onseeking=function(){
  14. console.log(` //seeking 寻找中 点击一个为(缓存)下载的区域`);
  15. }
  16. myVid.onseeked=function(){
  17. console.log(` //seeked 寻找完毕 `);
  18. }
  19. myVid.onplay=function(){
  20. console.log(`开始播放时触发 `);
  21. }
  22. myVid.onwaiting=function(){
  23. console.log(`播放由于下一帧数据未获取到导致播放停止,但是播放器没有主动预期其停止,仍然在努力的获取数据,简单的说就是在等待下一帧视频数据,暂时还无法播放。 `);
  24. }
  25. myVid.onplaying=function(){
  26. console.log(`真正处于播放的状态,这个时候我们才是真正的在观看视频。 `);
  27. }
  28. myVid.oncanplay=function(){
  29. console.log(`视频播放器已经可以开始播放视频了,但是只是预期可以正常播放,不保证之后的播放不会出现缓冲等待。 `);
  30. }
  31. myVid.onpause=function(){
  32. console.log(`暂停播放时触发 `);
  33. }
  34. myVid.onended=function(){
  35. alert(` //播放结束 loop 的情况下不会触发 `);
  36. }
  37. myVid.onvolumechange=function(){
  38. console.log(`音量改变 `);
  39. }
  40. myVid.onloadedmetadata=function(){
  41. console.log(`获取视频meta信息完毕,这个时候播放器已经获取到了视频时长和视频资源的文件大小。 `);
  42. }
  43. myVid.onloadeddata=function(){
  44. console.log(`"视频播放器第一次完成了当前播放位置的视频渲染。"`);
  45. }
  46.  
  47. myVid.onabort=function(){
  48. console.log(`客户端主动终止下载(不是因为错误引起), `);
  49. }
  50.  
  51. myVid.onerror=function(){
  52. console.log(`请求数据时遇到错误`);
  53. //1.用户终止 2.网络错误 3.解码错误 4.URL无效
  54. alert(myVid.error.code);
  55. }
  56.  
  57. //客户端请求数据
  58. myVid.onprogress=function(){
  59.  
  60. console.log(`客户端正在请求数据 触发多次,是分段请求的`);
  61. console.log(myVid.buffered);
  62. //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
  63. console.log(`networkState ${myVid.networkState}`);
  64. // //当前播放的位置,赋值可改变位置 myVid.currentTime = 11 从11秒位置开始播放
  65. console.log(myVid.currentTime);
  66. // //返回当前资源的URL
  67. console.log(myVid.currentSrc);
  68.  
  69. console.log(myVid.videoWidth);
  70. //播放结束 返回true 或 false
  71. console.log(myVid.ended);
  72. //音量大小 为0-1 之间的值
  73. console.log(myVid.volume);
  74.  
  75. //当前资源长度
  76. console.log(myVid.duration);
  77. console.log(myVid.startDate)
  78. // myVid.currentTime = 11

4.监听播放过程

  1. //使用事件监听方式捕捉事件
  2. video.addEventListener("timeupdate",function(){
  3. var timeDisplay;
  4. //用秒数来显示当前播放进度--实测1秒3次
  5. timeDisplay = Math.floor(video.currentTime);
  6. console.log(Math.floor(video.currentTime))
  7. //当视频播放到 4s的时候做处理
  8. if(timeDisplay == 4){
  9. //处理代码
  10. }
  11. },false);
  1.  

5.扩展(audio)

  音频有类似的属性和事件

<audio> 标签属性:

  1. src:音乐的URL
  2. preload:预加载
  3. autoplay:自动播放
  4. loop:循环播放
  5. controls:浏览器自带的控制

6.对象获取

  1. //audio可以直接通过new创建对象
  2. Media = new Audio("http://www.abc.com/test.mp3");
  3. //audio和video都可以通过标签获取对象
  4. Media = document.getElementById("media")

7.media方法属性总结

Media方法和属性:HTMLVideoElement 和 HTMLAudioElement 均继承自 HTMLMediaElement

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

事件:

  1. eventTester = function(e){
  2. Media.addEventListener(e,function(){
  3. console.log((new Date()).getTime(),e);
  4. });
  5. }
  6.  
  7. eventTester("loadstart"); //客户端开始请求数据
  8. eventTester("progress"); //客户端正在请求数据
  9. eventTester("suspend"); //延迟下载
  10. eventTester("abort"); //客户端主动终止下载(不是因为错误引起),
  11. eventTester("error"); //请求数据时遇到错误
  12. eventTester("stalled"); //网速失速
  13. eventTester("play"); //play()和autoplay开始播放时触发
  14. eventTester("pause"); //pause()触发
  15. eventTester("loadedmetadata"); //成功获取资源长度
  16. eventTester("loadeddata"); //
  17. eventTester("waiting"); //等待数据,并非错误
  18. eventTester("playing"); //开始回放
  19. eventTester("canplay"); //可以播放,但中途可能因为加载而暂停
  20. eventTester("canplaythrough"); //可以播放,歌曲全部加载完毕
  21. eventTester("seeking"); //寻找中
  22. eventTester("seeked"); //寻找完毕
  23. eventTester("timeupdate"); //播放时间改变
  24. eventTester("ended"); //播放结束
  25. eventTester("ratechange"); //播放速率改变
  26. eventTester("durationchange"); //资源长度改变
  27. eventTester("volumechange"); //音量改变
  1.  

video相关参数、操作和事件的更多相关文章

  1. 11g直接路径读、相关参数、10949事件介绍

    转载自刘向兵老师:http://www.askmaclean.com/archives/11g-direct-path-read-10949-_small_table_threshold-_seria ...

  2. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  3. Oracle buffer cache与相关的latch等待事件

    buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chain ...

  4. Monkey相关参数 笔记

    Monkey相关参数  笔记 Monkey是Android系统自带的一个命令行工具,可运行在模拟器里或实际设备中. Monkey可以向被测试的应用程序发送伪随机的用户事件流(如按键.触屏.手势等),实 ...

  5. MySQL复制相关参数详解

    MySQL复制相关参数详解 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.复制相关系统变量 1>.server_id 是必须设置在master和每个slave上的唯一标 ...

  6. MySQL8常见客户端和启动相关参数

    MySQL8常见客户端和启动相关参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL常见的客户端 1>.使用MySQL服务自带的mysql连接工具 2>. ...

  7. 第一百七十一节,jQuery,高级事件,模拟操作,命名空间,事件委托,on、off 和 one

    jQuery,高级事件,模拟操作,命名空间,事件委托,on.off 和 one 学习要点: 1.模拟操作 2.命名空间 3.事件委托 4.on.off 和 one jQuery 不但封装了大量常用的事 ...

  8. vue样式操作与事件绑定

    Vue笔记 1 Vue实例 (VM) var vm = new Vue({    el:'#app', //挂载元素        //数据    data: {        title:'值', ...

  9. MySQL相关参数总结

    保留个原文链接,避免被爬虫爬了过去,以便后续更正补充:https://www.cnblogs.com/wy123/p/11273023.html MySQL参数繁多,是一个需要根据具体业务.软硬件环境 ...

随机推荐

  1. 如何用GoldWave批量删除mp3文件开头65秒?

    具体操作如下: 一.打开goldwave--文件--批处理 二.批处理设置:     添加需处理的文件或文件夹(右侧)         1.转换:设置转换格式.         2.处理:       ...

  2. 4.29 初始mysql

  3. 教程二 网页和lua交互修改openwrt

    硬件 http://zhan.renren.com/h5/entry/3602888498044209332 GL-iNet 1 首先安装 webserver之lighttpd  ,openwrt自带 ...

  4. 如何让 Editplus 支持 SQL 语法高亮

    editplus 用来编辑或查看一些常用程序源码都很方便,而且软件小巧,但是他原生不能支持对 SQL 文件的高亮显示,有点遗憾,但好在我们可以自定义这种高亮显示,那么要如何设置呢 1. 首先点击下载文 ...

  5. mysql之聚合函数、group by、having

    sql中提供聚合函数可以用来统计,求和,求最值等 那么聚合函数有哪些呢? COUNT    统计行数量 SUM         求某一列的和 AVG          求某一列的平均值 MAX  求某 ...

  6. 理解 Linux 中 `ls` 的输出

    ls 的输出会因各 Linux 版本变种而略有差异,这里只讨论一般情况下的输出. 下面是来自 man page 关于 ls 的描述: $ man ls ls - list directory cont ...

  7. DotNetCore跨平台~认识环境和环境变量

    回到目录 环境 环境,对于开发来说就是部署的一种场景,你可以是调试场景,测试场景,生产场景,当然还可以有很多其它的场景,只要你的项目需要就可以自定义,微软帮我们定义了三种标准的环境变量,下面来说一下. ...

  8. 使用logdashboard进行可视化的日志追踪

    本文源码在Github可以找到下载 LogDashboard 如果你还不了解LogDashboard请看这里. LogDashboard 1.1版本支持请求追踪,虽然目前版本还没有发布.不过这个功能可 ...

  9. java的spi 的简单应用

    1.什么是java的spi SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制. 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一 ...

  10. 开箱即用(out-of-box)的Redis序列号生成器,不用再写任何代码,你值得拥有

      先看整体效果 把简单的东西“傻瓜化”是软件开发追求的目标之一.请看下图: 左边是在 application.yml 里配置了3个生成器,右边可以直接注入到代码中使用,注意,不用写任何代码.这酸爽. ...