h5 的video视频控件

由于html5的流行,其中的video视频的使用很流行,使得可恨的IE9也能与时俱进了。

video所支持的格式有mp4、ogg和wav三种。

例:

HTML5 Video基础标签

`

  1. <video id="myVideo" controls poster="video.jpg" width="640" height="320" >
  2. <source src="video.mp4" type="video/mp4" />
  3. <source src="video.wav" type="video/wav" />
  4. <source src="video.ogv" type="video/ogg" />
  5. <p>Your browser does not support the video tag.</p>
  6. </video>`

下面制作Video的控件controls

本人是通过jQuery来进行获取标签及相应的控件使用操作的

Video Play/Pause Controls 播放/暂停 按钮

通过jQuery来控制video的播放、暂停

jQuery代码
  1. $('.btnPlay').on('click', function() {
  2. if(video[0].paused) {
  3. video[0].play();
  4. }
  5. else {
  6. video[0].pause();
  7. }
  8. return false;
  9. };
html代码
  1. <div class="control">
  2. <a href="#" class="btnPlay">Play/Pause</a>
  3. </div>

显示视频播放时间和持续时间

看视频肯定最好要有个时间的概念啦!!!

jQuery代码
  1. video.on('loadedmetadata', function() {
  2. $('.duration').text(video[0].duration);
  3. });
  4. //update HTML5 video current play time
  5. video.on('timeupdate', function() {
  6. $('.current').text(video[0].currentTime);
  7. });
html代码
  1. <div class="progressTime">
  2. 当前播放时间: <span class="current"></span>
  3. 总时间: <span class="duration"></span>
  4. </div>

视频进度条

动态模拟时间

css样式
  1. .progressBar
  2. {
  3. position: relative;
  4. width: 100%;
  5. height: height:10px;
  6. backgroud-color: #000;
  7. }
  8. .timeBar
  9. {
  10. position: absolute;
  11. top: 0;
  12. left: 0;
  13. width: 0;
  14. height: 100%;
  15. background-color: #ccc;
  16. }
jQuery代码
  1. //get HTML5 video time duration
  2. video.on('loadedmetadata', function() {
  3. $('.duration').text(video[0].duration));
  4. });
  5. //update HTML5 video current play time
  6. video.on('timeupdate', function() {
  7. var currentPos = video[0].currentTime; //Get currenttime
  8. var maxduration = video[0].duration; //Get video duration
  9. var percentage = 100 * currentPos / maxduration; //in %
  10. $('.timeBar').css('width', percentage+'%');
  11. });
  12. var timeDrag = false; /* Drag status */
  13. $('.progressBar').mousedown(function(e) {
  14. timeDrag = true;
  15. updatebar(e.pageX);
  16. });
  17. $(document).mouseup(function(e) {
  18. if(timeDrag) {
  19. timeDrag = false;
  20. updatebar(e.pageX);
  21. }
  22. });
  23. $(document).mousemove(function(e) {
  24. if(timeDrag) {
  25. updatebar(e.pageX);
  26. }
  27. });
  28. //update Progress Bar control
  29. var updatebar = function(x) {
  30. var progress = $('.progressBar');
  31. var maxduration = video[0].duration; //Video duraiton
  32. var position = x - progress.offset().left; //Click pos
  33. var percentage = 100 * position / progress.width();
  34. //Check within range
  35. if(percentage > 100) {
  36. percentage = 100;
  37. }
  38. if(percentage < 0) {
  39. percentage = 0;
  40. }
  41. //Update progress bar and video currenttime
  42. $('.timeBar').css('width', percentage+'%');
  43. video[0].currentTime = maxduration * percentage / 100;
  44. };
html代码
  1. <div class="progressBar">
  2. <div class="timeBar"></div>
  3. </div>

缓冲栏

看视频时缓冲加载了多少

样式
  1. <style>
  2. .progressBar {
  3. position: relative;
  4. width: 100%;
  5. height: height:10px;
  6. backgroud-color: #000;
  7. }
  8. .bufferBar {
  9. position: absolute;
  10. top: 0;
  11. left: 0;
  12. width: 0;
  13. height: 100%;
  14. background-color: #ccc;
  15. }
  16. </style>
  17. <div class="progressBar">
  18. <div class="bufferBar"></div>
  19. </div>
Html5 Video缓冲属性将返回一个对象的缓存范围.因此,我们将使用缓存数据的最后一个值.
  1. //loop to get HTML5 video buffered data
  2. var startBuffer = function() {
  3. var maxduration = video[0].duration;
  4. var currentBuffer = video[0].buffered.end(0);
  5. var percentage = 100 * currentBuffer / maxduration;
  6. $('.bufferBar').css('width', percentage+'%');
  7. if(currentBuffer < maxduration) {
  8. setTimeout(startBuffer, 1000);
  9. }
  10. };
  11. setTimeout(startBuffer, 1000);

音量控制

当然啦!看视频肯定得调个音量哦!!!

html代码

  1. <a href="#" class="muted" >Mute/Unmute</a>
  2. <div class="volumeBar">
  3. <div class="volume"></div>
  4. </div>
jQuery代码
  1. //Mute/Unmute control clicked
  2. $('.muted').click(function() {
  3. video[0].muted = !video[0].muted;
  4. return false;
  5. });
  6. //Volume control clicked
  7. $('.volumeBar').on('mousedown', function(e) {
  8. var position = e.pageX - volume.offset().left;
  9. var percentage = 100 * position / volume.width();
  10. $('.volumeBar').css('width', percentage+'%');
  11. video[0].volume = percentage / 100;
  12. });

快进/快退 倒带控制

Video有个属性playbackrate来控制视屏的播放进程

html代码

  1. <div class="control">
  2. <a href="#" class="ff">Fast Forward</a>
  3. <a href="#" class="rw">Rewind</a>
  4. <a href="#" class="sl">Slow Motion</a>
  5. </div>
jQuery代码
  1. //Fast forward control
  2. $('.ff').on('click', function() {
  3. video[0].playbackrate = 3;
  4. return false;
  5. });
  6. //Rewind control
  7. $('.rw').on('click', function() {
  8. video[0].playbackrate = -3;
  9. return false;
  10. });
  11. //Slow motion control
  12. $('.sl').on('click', function() {
  13. video[0].playbackrate = 0.5;
  14. return false;
  15. });
然而很不幸的是:FireFox不支持playbackrate属性.以及有些版本的chrome浏览器不支持负值(倒带).到目前为止,只有Safri浏览器完全支持.所以请大家注意啦!

全屏播放

jQuery代码
  1. $('.fullscreen').on('click', function() {
  2. //For Webkit
  3. video[0].webkitEnterFullscreen();
  4. //For Firefox
  5. video[0].mozRequestFullScreen();
  6. return false;
  7. });

开灯关灯控制

jQuery代码
  1. $('.btnLight').click(function() {
  2. if($(this).hasClass('on')) {
  3. $(this).removeClass('on');
  4. $('body').append('<div class="overlay"></div>');
  5. $('.overlay').css({
  6. 'position':'absolute',
  7. 'width':100+'%',
  8. 'height':$(document).height(),
  9. 'background':'#000',
  10. 'opacity':0.9,
  11. 'top':0,
  12. 'left':0,
  13. 'z-index':999
  14. });
  15. $('#myVideo').css({
  16. 'z-index':1000
  17. });
  18. }
  19. else {
  20. $(this).addClass('on');
  21. $('.overlay').remove();
  22. }
  23. return false;
  24. });

好了!终于给整的差不多了!!!

h5 的video视频控件的更多相关文章

  1. video视频控件

    <!-- 视频播放内容 --> <!-- autoplay准备就绪会自动播放 --> <!-- controls,要自定义得去掉这个 -->   <video ...

  2. H5 video自定义视频控件

    1.自定义效果截图 2.效果源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK

    LEADTOOLS Video Streaming Module控件为您创建一个自定义的视频会议应用程序和工具提供所有需要的功能.软件开发人员可以使用Video Streaming Module SD ...

  4. cocos2d-x视频控件VideoPlayer的用户操作栏进度条去除(转载)

    目前遇到两个问题: (1)视频控件移除有问题,会报异常. (2)视频控件有用户操作栏,用户点击屏幕会停止视频播放. 对于第一个问题,主要是移除控件时冲突引起的,目前简单处理是做一个延时处理,先stop ...

  5. jquery和css自定义video播放控件

    下面介绍一下通过jquery和css自定义video播放控件. Html5 Video是现在html5最流行的功能之一,得到了大多数最新版本的浏览器支持.包括IE9,也是如此.不同的浏览器提供了不同的 ...

  6. jQ效果:jQuery和css自定义video播放控件

    下面介绍一下通过jquery和css自定义video播放控件. Html5 Video是现在html5最流行的功能之一,得到了大多数最新版本的浏览器支持.包括IE9,也是如此.不同的浏览器提供了不同的 ...

  7. android--------自定义视频控件(视频全屏竖屏自动切换)

    android播放视频也是常用的技术,今天分享一个自定义视频控件,支持自定义控制 UI,全屏播放, 可以实现自动横竖屏切换的控件,跟随手机的位置而,重力感应自动切换横竖屏. 效果图:   代码下载Gi ...

  8. 关于intouch/ifix嵌入视频控件并使用(海康,大华)

    2017年下半年项目开始接触利用intouch工控软件来进行项目二次开发.其中关于驱动的问题始终是上位机的重中之重,暂且不表(嘿嘿--),首先遇到的问题就是在弹窗中嵌入视频控件,监控设备的开停状态.经 ...

  9. h5+js视频播放器控件

    由于h5兼容性问题,很多浏览器对于插入视频播放的支持都大不相同.火狐支持的比较完整,谷歌则支持的不是很好,很多功能都不能实现,这就需要我们去自制一个播放界面,去兼容不同的浏览器. 只插入一个视频时,浏 ...

随机推荐

  1. HDU 3723 Delta Wave (高精度+calelan数)

    题意:给定一个图,问你只能向上向下,或者平着走,有多少种方法可以走到最后一个格. 析:首先先考虑,如果没有平的情况就是calelan数了,现在有平的情况,那么就枚举呗,因为数很大,所以要用高精度. 答 ...

  2. 编写高质量代码改善C#程序的157个建议——建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>

    建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T> LINQ查询一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:E ...

  3. 解决jquery操作checkbox火狐下第二次无法勾选问题

    最近在学习jQuery(版本jquery-1.9.1.js),要求用jQuery实现全选/全不选.反选,在IE(IE8)中没有问题,但在火狐浏览器中调试的时候出现了一些小问题,达不到效果. html代 ...

  4. spring是如何由请求地址找到对应的control的

    spring先将所有的action bean放进内存中,然后根据@RequestMapping(value = "/", method = RequestMethod.GET)这种 ...

  5. C#ADO.NET基础一

    简介 使用SQLite进行讲解 1.基础类: SQLiteConnection 连接数据库 SQLiteCommand 执行命令(增,删,改,查),或存储过程 SQLiteDataReader 读取查 ...

  6. EIP权限工作流平台-升级说明(2018-12-04)

    表单生成器,文本框新增验证(默认验证及正则表达式) 列表查询支持复杂查询,支持文本框,下拉框,时间查询

  7. windows环境下安装ZooKeeper

    $.说明 ZooKeeper: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件. 它是一个为分布式 ...

  8. 【leetcode 138. 复制带随机指针的链表】解题报告

    方法一:递归 unordered_map<Node*,Node*> dict; Node* copyRandomList(Node* head) { if (!head) return h ...

  9. 单链表倒数第K个节点的查找和显示

    1.使用一个固定长度队列装链表段,当遍历到链表根时,返回队列头元素. class Node{ int value; Node next; public Node(int value){ this.va ...

  10. 运行Scrapy工程,报错ModuleNotFoundError: No module named 'win32api'解决方法

    1.运行爬虫scrapy crawl name,报错ScrpyModuleNotFoundError: No module named 'win32api' 2.解决方法: 在https://gith ...