vedeo与audio标签的使用
浏览器原生支持音视频无疑是一件大事——尤其对移动设备而言。不依赖Flash,意味着更加省电、安全和快速的播放体验,而且只需要引入一个标签,就能播放自如。
<video src="daomei.mp4" autoplay controls></video>
仅仅一行代码,就可以实现一个带控件(controls 属性) 的视频播放器。如下图所示。

如果浏览器不支持video元素,我们可以在video标签中嵌入提示文字来实现fallback。
<video src="daomei.mp4" autoplay controls>
你的浏览器不支持<code>video</code>元素,是时候升级了!
</video>
音频播放也是类似的:
<audio src="单车.mp3" controls autoplay>
<p>没有声音,再好的戏也出不来。</p>
</audio>
指定 autoplay 属性可以使视频在加载页面的时候自动播放,loop 属性则可以让其循环播放:
<video src="daomei.mp4" autoplay controls loop></video>
poster 属性可以为视频指定一张海报(播放前会显示它):
<video src="daomei.mp4" controls loop poster="1.png"></video>
对于较大的文件还可以指定 preload 属性进行预载入:
<audio src="单车.mp3" controls perload="auto"></audio>
preload 可以从三个值中指定。
1. none:不缓冲此文件。
2. auto:缓冲整个媒体文件。
3. metadata:只缓冲部分元数据(比如该媒体的时长)。
* 由于不同浏览器支持的文件格式不同,HTML5提供了 source 元素让我们可以提供多种格式编码的文件以兼容这些浏览器:
<video controls autoplay>
<source src="daomei.ogg" type="video/ogg"></source>
<source src="daomei.mp4" type="video/mp4"></source>
<source src="daomei.webm" type="video/webm"></source>
你的浏览器不支持<code>video</code>元素,是时候升级了!
</video>
上面的代码在支持ogg格式的浏览器里会直接播放daomei.ogg文件,如果不支持ogg,浏览器会依次检测MP4和webm格式的支持情况。这里需要注意的是,浏览器会根据type里的MIME值和服务器最终返回的值来判断文件是否可以播放,src里的文件扩展名并不是判断格式的依据。
^_^ 当然除了标签本身提供的这些功能之外,我们还可以使用JavaScript更加细致地控制媒体文件,比如 play 和 pause 方法可以控制媒体的播放与暂停:
var oVideo=document.querySelector('video');
oVideo.play();
setTimeout(function(){
oVideo.pause();
},2000);
当然我们可以写一个简单的MP3播放器,以控制播放/暂停以及控制声音大小:
<audio src="单车.mp3"></audio><br/>
<input type="button" value="播放" onclick="document.querySelector('audio').play();"/>
<input type="button" value="暂停" onclick="document.querySelector('audio').pause();"/>
<input type="button" value="加音量" onclick="document.querySelector('audio').volume+=0.1;"/>
<input type="button" value="减音量" onclick="document.querySelector('audio').volume-=0.1;"/>
* 在这里我们需要注意的就是HTML5提供了暂停接口却并没有提供给我们停止的接口,而且即便是暂停后浏览器依然会继续下载媒体文件。如果想提供停止功能,简单的做法就是将 src 属性设置为空:
var oVideo=document.querySelector('video');
oVideo.play();
setTimeout(function(){
oVideo.pause();
oVideo.src='';
},2000);
媒体元素( video / audio )本身还提供了非常强大的控制功能,我们还可以控制播放的进度:
var oVideo=document.querySelector('video');
oVideo.seekable.start(0); //返回开始时间 (单位为秒,通常都会返回0);
oVideo.seekable.end(0); //返回结束时间,通常是媒体文件的时长;
oVideo.currentTime; //返回当前播放到多少时间;
oVideo.currentTime=122; //跳转到第122秒;
oVideo.played.end(0); //返回浏览器已经播放了多长时间;
oVideo.buffered.end(0); //返回浏览器已经缓冲了多长时间;
oVideo.muted=true; //静音;
oVideo.volume=1; //将音量调至最大;
媒体元素上的seekable、played 和 buffered 属性都是一个 TimeRanges 类型的对象,表示一个时间范围,我们可以通过访问它的 start 和 end 方法来确定开始和结束的时间。currentTime
表示当前时间,它是可读可写的值。一个媒体的开始时间和结束时间通常是固定的。但是我们也可以通过 hash mark(#)的方式来设置,语法是:
<video src="daomei.mp4#t=100,200" autoplay controls></video>
这样视频将自动从第100秒开始播放,并在200秒时停止。时间设置也可以是冒号分割的形式,诸如1:04:00。
<video src="daomei.mp4#t=1:04:00" autoplay controls></video>
注意: 在Android或IOS设备上,HTML5视频元素将会调用设备内置的播放器来播放音视频,定制的播放器外观将失去效果,所以不必纠结。
vedeo与audio标签的使用的更多相关文章
- HTML5的Audio标签打造WEB音频播放器
目前,WEB页面上没有标准的方式来播放音频文件,大多数的音频文件是使用插件来播放,而众多浏览器都使用了不同的插件.而HTML5的到来,给我们提供了一个标准的方式来播放WEB中的音频文件,用户不再为浏览 ...
- 论HTML5 Audio 标签歌词同步的实现
HTML5草案里面其实有原生的字幕标签(<track> Tag)的,但使用的是vtt格式的文件,非常规的字幕(.sub, .srt)或歌词文件(.lrc). 用法如下(代码来自W3Scho ...
- 关于HTML5音频——audio标签和Web Audio API各平台浏览器的支持情况
对比audio标签 和 Web Audio API 各平台浏览器的支持情况: audio element Web Audio API desktop browsers Chrome 14 Yes ...
- 使用audio标签播放音频文件
HTML5定义了一个新的元素用来指定标准的方式来插入音频文件到web页面中:<audio>标签.使用audio标签可以控制音频的播放与停止,循环播放与播放次数设置,以及播放位置等等. 例如 ...
- H5页面实现一个Audio标签加载多个音频文件,并进行播放和展示音频长度
最近微信项目中有需求,要将微信端发送过来的amr格式的语音文件,在项目中的页面上进行展示和播放,实现方式如下: 1.首先java后台收到微信端的消息推送的时候,使用 ffmpeg将amr格式的音频文件 ...
- <video>和<audio>标签
一.<video>基本格式: <video width=" " heigh="" src=""> </vide ...
- HTML5 <Audio/>标签Api整理(二)
1.实例2: 相对较完整 Html代码: <style> #volumeSlider .slider-selection { background:#bababa; } </styl ...
- HTML5 <Audio>标签API整理(一)
简单实例: <audio id="myAudio"></audio> <script> var myAudio = document.getEl ...
- 关于HTML5中audio标签在手机中的autoplay
这个问题是我最头疼的: 问题描述:在开发手机网页的时候,苹果和三星的一些浏览器不能自动开始播放 解决办法:在这个页面上弹出一个层来触发audio标签的play()方法,或者你还可以 谷歌一下----& ...
随机推荐
- sqlserver cte递归向上统计
数据字典如下
- protocol(协议) 和 delegate(委托)也叫(代理)---辨析
protocol和delegate完全不是一回事. 协议(protocol),(名词)要求.就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现. 委托(delegate),(动 ...
- python PIL except: IOError: decoder jpeg not available
今天在Python运行环境的服务器弄一个有关图像处理的程序时报这样的错: 1 NameError: global name 'Image' is not defined import Image 了下 ...
- Gnome Tetravex
zoj1008:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1008 题目意思是有一个游戏,即给出一个图,该图是由n*n个 ...
- JAVA存取对象属性时,如果开程多线程,记得对相关存取方法作原子化操作定义
最显著的应用当然是银行存款和取款,不要存在存取数字和实际发生不一样的情况. synchronized关键字. class BankAccount { private int balance = 100 ...
- Git批量修改提交历史
有些时候我们可能需要批量修改提交历史,当然了,最近一次的提交历史很简单我们可以利用 git commit --amend 来进行最近一次提交的修改,如果你此时想要更新作者提交时间等也可以在amend之 ...
- poj2594
特殊的最小路径覆盖回顾一下经典的最小路径覆盖问题是每个点都恰好被一条路径覆盖我们把有向无环图的点拆成i,i',对于原图中边i--->j,连边i-->j'做最大匹配,答案是原图点数-最大匹配 ...
- ubuntu下新建VPN连接
1. 安装VPN Client#sudo apt-get install pptp-linux2. 安装网络管理器对VPN的支持#sudo apt-get install network-manage ...
- ♫【JS模式】偏函数
<深入浅出Node.js> var toString = Object.prototype.toString var isType = function(type) { return fu ...
- Android数据加密解密
最近项目在维护过程中,估计这一周都会没有什么事情做了.于是开始打量自己做完的这个项目,项目在展示方面乏善可陈,然后仔细的想了想,这个项目的亮点无非就在数据加密和解密这一块了.因为是银行的项目,所以对数 ...