浏览器原生支持音视频无疑是一件大事——尤其对移动设备而言。不依赖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; //将音量调至最大;

媒体元素上的seekableplayedbuffered 属性都是一个 TimeRanges 类型的对象,表示一个时间范围,我们可以通过访问它的 startend 方法来确定开始和结束的时间。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标签的使用的更多相关文章

  1. HTML5的Audio标签打造WEB音频播放器

    目前,WEB页面上没有标准的方式来播放音频文件,大多数的音频文件是使用插件来播放,而众多浏览器都使用了不同的插件.而HTML5的到来,给我们提供了一个标准的方式来播放WEB中的音频文件,用户不再为浏览 ...

  2. 论HTML5 Audio 标签歌词同步的实现

    HTML5草案里面其实有原生的字幕标签(<track> Tag)的,但使用的是vtt格式的文件,非常规的字幕(.sub, .srt)或歌词文件(.lrc). 用法如下(代码来自W3Scho ...

  3. 关于HTML5音频——audio标签和Web Audio API各平台浏览器的支持情况

    对比audio标签 和 Web Audio API 各平台浏览器的支持情况:   audio element Web Audio API desktop browsers Chrome 14 Yes  ...

  4. 使用audio标签播放音频文件

    HTML5定义了一个新的元素用来指定标准的方式来插入音频文件到web页面中:<audio>标签.使用audio标签可以控制音频的播放与停止,循环播放与播放次数设置,以及播放位置等等. 例如 ...

  5. H5页面实现一个Audio标签加载多个音频文件,并进行播放和展示音频长度

    最近微信项目中有需求,要将微信端发送过来的amr格式的语音文件,在项目中的页面上进行展示和播放,实现方式如下: 1.首先java后台收到微信端的消息推送的时候,使用 ffmpeg将amr格式的音频文件 ...

  6. <video>和<audio>标签

    一.<video>基本格式: <video width=" " heigh="" src=""> </vide ...

  7. HTML5 <Audio/>标签Api整理(二)

    1.实例2: 相对较完整 Html代码: <style> #volumeSlider .slider-selection { background:#bababa; } </styl ...

  8. HTML5 <Audio>标签API整理(一)

    简单实例: <audio id="myAudio"></audio> <script> var myAudio = document.getEl ...

  9. 关于HTML5中audio标签在手机中的autoplay

    这个问题是我最头疼的: 问题描述:在开发手机网页的时候,苹果和三星的一些浏览器不能自动开始播放 解决办法:在这个页面上弹出一个层来触发audio标签的play()方法,或者你还可以 谷歌一下----& ...

随机推荐

  1. jQuery.dialog

    本篇文章主要是对JQUERY中dialog的用法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 今天用到了客户端的对话框,把 jQuery UI 中的对话框学习了一下. 准备 jQ ...

  2. Flux

    Ken Wheeler 构建React 应用的一套架构.  应用程序架构, 单向数据流方案. Dispatcher 的开源库.   一种全局pub/sub 系统的事件处理器, 用于 向所注册的加调函数 ...

  3. George and Cards

    Codeforces Round #227 (Div. 2) E:http://codeforces.com/contest/387/problem/E 题意:给你一个n个数的序列,然后给你一个标准序 ...

  4. Keil MDK与h-jtag联调

    keil MDK也是可以借助h-jtag进行单步调试,写出来与大家一起分享一下. keil MDK编译器使用V4.01版本,下载地址:http://www.embedinfo.com/down-lis ...

  5. OTP语音芯片和掩模语音芯片(mask)的区别

    OTP(One Time Programable)是MCU的一种存储器类型,意思是一次性可编程:程序烧入IC后,将不可再次更改和:因此OTP语音芯片就是指一次性烧录的语音IC. 从OTP定义上来看,只 ...

  6. 2.JQuery AJAX

    new ActiveXObject("Microsoft XMLHTTP")是IE中创建XMLHTTPRequest对象的方法.非IE浏览器创建方法是new XmlHttpRequ ...

  7. 查看Redis信息和状态

    原文转自:http://redisdoc.com/server/info.html INFO [section] 以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和 ...

  8. jsoup技术抓取网页数据大全

    jsoupNews Bugs Discussion Download API Reference Cookbook jsoup ? Cookbook ? Extracting data ? 使用选择器 ...

  9. 安装Maven、nexus

    一.软件包版本 jdk:jdk1.7.0_79 maven:apache-maven-3.3.3-bin.tar.gz nexus:nexus-webapp-2.8.0-05.war 二.安装mave ...

  10. HDOJ(HDU) 2139 Calculate the formula(水题,又一个用JavaAC不了的题目)

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 看到这个时间,我懵逼了... 果然,J ...