以前的网页视频

过去还没有HTML5的时候,我们处理网页视频的时候,都是通过Flash插件来实现的,然而,并非所有浏览器都有同样的插件。

现在有了HTML5带来的video元素,开发者能够很方便地将视频资源嵌入到HTML文档中。

video标签的用法

<video>标签:定义视频,比如电影片段或其他视频。

    <video src="movie.mp4"></video>

就这么简单的一行代码,你就可以将你的视频文件引入到了HTML文档中。其中属性src跟img标签的src作用一致:指定资源的文件路径。

不支持video标签的浏览器

也许你会问,<video> 标签怎么说也是HTML5的新特性,老的浏览器不支持的情况下要怎么处理?也很简单:

    <video src="movie.mp4">
        浏览器太老啦,该换了!
   </video>

可以在标签之间放置一句话,这样老的浏览器就可以显示出不支持该标签的信息。

(IE8就不支持video)

当然,除了可以是文本内容,也可以是其他的html代码。

如何处理3种视频格式

<video> 元素支持三种视频格式: MP4, WebM, 和 Ogg。但是,不同的浏览器对视频格式的支持也不一致。如何能更好地处理这种情况呢?看:

    <video>
        <source src="movie.mp4" type="video/mp4">
        <source src="movie.ogg" type="video/ogg">
        浏览器太老啦,该换了!
   </video>

我们利用<source>标签为<video>标签定义视频文件资源,这样浏览器会自动选择一个它所支持的视频格式类型来展示,忽略其他类型,是不是觉得浏览器相当的机智。

而<source>标签的type属性是用于规定媒体资源的 MIME 类型。它的值有:

  • video/ogg

  • video/mp4

  • video/webm

video标签的属性

接下来,我们继续学习<video>标签几个很实用的属性。

autoplay 属性:规定视频加载完毕后就开始播放。

    <video autoplay></video>

给<video>标签添加autoplay属性即可,这种写法是简写。你可以这样写:

    <video autoplay="autoplay"></video>

但是我们建议用简写,更加简洁,下面的属性介绍,我们都会用简写的形式表示。

controls属性:向用户显示控件,比如播放按钮。

    <video controls></video>

加上了controls属性,我们看看效果:

可以看到,视频下方出来了一些控件栏,点击控件可以对视频进行操作:播放/暂停、进度、声音、全屏显示等,十分方便。

 

loop 属性: 使视频自动重复播放。

    <video loop></video>

这个好理解,视频播放结束后会自动重新播放。

muted属性:规定视频静音播放。

    <video muted></video>

poster 属性:视频播放之前显示的图片。

    <video poster="poster.png"></video>

poster属性的值是该图片的所在路径。我们来看看效果:

(我是个gif图,加载慢,怪我咯)

在视频加载和播放之前,我们显示的都是poster图片(我放了“web前端教程”公众号的logo)的内容。直到用户点击播放的时候,才会显示视频的内容。

preload 属性:规定是否在页面加载后载入视频。

    <video preload="auto"></video>

它的值有:

  • auto - 当页面加载后载入整个视频

  • metadata - 当页面加载后只载入元数据

  • none - 当页面加载后不载入视频

height属性:设置视频播放器的高度。

    <video height="100"></video>

width属性:设置视频播放器的宽度。

    <video width="100"></video>

利用height和width属性,可以模拟全屏展示效果。

JavaScript中的video对象

除了通过标签属性来控制视频文件以外, HTML5的 video 对象提供可以用于通过JavaScript 控制播放的方法、属性以及事件。

播放 / 暂停

video 对象提供了paused属性、play( )方法和pause()方法供我们使用。

paused属性可以获取当前视频是否处于暂停状态,如果是,返回true。如果正在播放,则返回false。

    var v = document.getElementById('video');
   //当前是否暂停
   v.paused;

调用pause( )方法,会使视频立即处于暂停状态。

    //暂停
   v.pause();

调用play( )方法,视频则会继续播放,十分简单。

    
   //播放
   v.play();

音量控制

通过video对象的volume属性来控制音量。


   v
.volume += 0.1;

volume的值范围在0~1之间,值越大,声音越大,反之,声音越小。

seekable 属性

video对象还有一个seekable 属性,它会返回用户在视频中可寻址的时间范围。什么意思呢?我们来试一下看。

获取视频开始播放的时间位置,默认是0秒位置。


   v
.seekable.start(0);

获取视频播放结束的时间点,一般来说也就是这个视频的播放时长。


   v
.seekable.end(0);

利用这两个特性,就可以计算出视频的总播放时长是多少了。也就是上面说的可寻址的时间范围(很简单的一个概念,硬是说成可寻址时间范围这么陌生抽象)。

获取和控制播放时间

获取视频已播放了的时间长度。


   v
.played.end(0)

如果视频从0秒处开始播放,播放了4秒,那么上面得到的结果就是:4 。

设置视频当前的播放时间。


   v
.currentTime = 5;

这样,视频的播放时间就会跳至5秒的位置,然后继续播放。倘若你设置的时间大于视频的总时长,就会被跳到视频的最后位置。

URL控制播放范围

除了通过属性和JavaScript来控制视频之外,我们还有一种方式来操控视频。是什么呢?比较有趣。

在<video>指定视频文件的URI的时候,可以选择性地加入一些额外信息来指定视频播放的起始时间和结束时间。比如:我们要设置视频的播放开始时间在3秒的位置,结束时间在7秒的位置,那么,我们可以这样做:

  <video src="movie.mp4#t=3,7"></video>

格式为: #t=startTime,endTime。这样,视频就会在3秒的位置开始播放,播放至7秒处就会停止。

<video>标签的特性的更多相关文章

  1. HTML5 video标签播放视频下载原理

    HTML5 video https://github.com/remy/html5demos/blob/master/demos/video.html <video preload=" ...

  2. video 标签在微信浏览器的问题解决方法

    最近做的些web页面,内嵌许多小视频,在ios和安卓手机上播放时,遇到不少问题: 在微信浏览器内播放时,视频会自动全屏 如果每个视频都有一张自定义的图片作为封面,在显示视频的同时,如果没有给这个视频设 ...

  3. HTML5 audio与video标签实现视频播放,音频播放

    随着互联网的飞速发展以及HTML5的应用,越来越多的项目中用到video,audio当常用标签. <audio> 标签属性 <audio src="song.mp3&quo ...

  4. 巧用transform实现HTML5 video标签视频比例拉伸

    前言 原文地址 曾几何时,项目中有碰到视频比例拉伸的需求,但是发现这个看似再普通不过的一个需求,找遍全网至今都没有找到解决方法.因为强制给video标签设置width和height的话只会将video ...

  5. HTML5 Audio/Video 标签,属性,方法,事件汇总

    HTML5 Audio/Video 标签,属性,方法,事件汇总 (转) 2011-06-28 13:16:48   <audio> 标签属性:src:音乐的URLpreload:预加载au ...

  6. HTML5的Video标签的属性,方法和事件汇总

    <video>标签的属性 src :视频的属性 poster:视频封面,没有播放时显示的图片 preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览 ...

  7. video标签的属性和方法总结

    最近想做一个弹幕插件,查了很多video标签的属性和方法 error属性 在正常读取时候,使用媒体数据的过程中,video元素或audio元素的error属性为null,但是任何时候只要出现错误,er ...

  8. 解决h5的video标签,android、ipad客户端播放正常,iphone客户端无法播放

    在做html5时插入一个视频播放标签video后,测试时android.ipad客户端播放正常,唯独iphone自带浏览器无法播放. 解决办法: 判断用户所使用客户端访问h5页面时是iphone时,点 ...

  9. HTML 5 video 标签跨浏览器兼容

    <video width="320" height="240" controls>   <source src="movie.mp4 ...

随机推荐

  1. 嵌入式框架Zorb Framework搭建二:环形缓冲区的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  2. LOOP AT SCREEN

    用法 主に.画面の属性を変更させるために使用する. 照会モードでは入力不可とするが入力可能モードでは入力可能とする.ラジオボタンAが選択された場合はラジオボタンBに関連する項目は非表示とするなど.   ...

  3. java 获取图片大小(尺寸)

    1,获取本地图片大小(尺寸) File picture=new File(strSrc);BufferedImage sourceImg=ImageIO.read(new FileInputStrea ...

  4. java 第三章 流程控制语句

    1.条件语句 (1)if 语句 ( 单一条件) if (表达式){ 执行语句块 } (2)执行流程 · if 语句 条件表达式可以是任何一种逻辑表达式   如果表达式值为true,则执行花括号的内容后 ...

  5. 【转】iOS库 .a与.framework区别

    转自:http://blog.csdn.net/lvxiangan/article/details/43115131 一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态 ...

  6. django 解决cors问题

    首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 登录注册 AFei0018-博客 穷则思变,差则思勤.Pyth ...

  7. mysql 处理日期格式

    DATE_FORMAT(createTime,'%Y-%m-%d %H:%i:%s') 对应格式: 2018-12-17 17:33:43 DATE_FORMAT()函数所有格式:   以后有需要在自 ...

  8. 为Zabbix配置RabbitMQ监控模板

    RabbitMQ的配置参考 https://github.com/jasonmcintosh/rabbitmq-zabbix 简而言之,具体分为几个步骤: 1. 将脚本文件(scripts文件夹)和配 ...

  9. 合规P2P平台成PE/VC新宠

    013年是互联网金融元年,余额宝.百发等掀起了大众理财的新一轮高潮.P2P平台作为互联网金融模式之一,也受到市场的重点关注-在部分平台不断爆出风险事件的同时,业内较为成熟的平台也正成为PE/VC的新宠 ...

  10. BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块

    Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们 ...