HTML5 特性,包括原生音频和视频支持而无需 Flash。
HTML5 <audio> 和 <video> 标签让我们给站点添加媒体变得简单。我们只需要设置 src 属性来识别媒体资源,包含 controls 属性让用户可以播放和暂停媒体。
<video>
嵌入视频
<video src="foo.mp4" width="300" height="200" controls>
Your browser does not support the <video> element.
</video>
目前的 HTML5 规范草案还没有指定浏览器应该在 video 标签中支持哪种视频格式。但是最常用的视频格式是:
- Ogg:带有 Thedora 视频编码器和 Vorbis 音频编码器的 Ogg 文件。
- mpeg4:带有 H.264 视频编码器和 AAC 音频编码器的 MPEG4 文件。
我们可以使用带有媒体类型和其他属性的 <source> 标签指定媒体文件。video 元素允许使用多个 source 元素,浏览器会使用第一个认可的格式:
<!DOCTYPE HTML>
<html>
<body>
<video width="300" height="200" controls autoplay>
<source src="/html5/foo.ogg" type="video/ogg" />
<source src="/html5/foo.mp4" type="video/mp4" />
Your browser does not support the <video> element.
</video>
</body>
</html>
video属性规范
HTML5 video 标签可以使用多个属性控制外观和感觉以及各种控制功能:
属性 | 描述 |
---|---|
autoplay | 如果指定这个布尔值属性,只要没有停止加载数据,视频就会立刻开始自动播放。 |
autobuffer | 如果指定这个布尔值属性,即使没有设置自动播放,视频也会自动开始缓冲。 |
controls | 如果指定这个属性,就允许用户控制视频播放,包括音量控制,快进,暂停或者恢复播放。 |
height | 这个属性以 CSS 像素的形式指定视频显示区域的高度。 |
loop | 如果指定这个布尔值属性,表示允许播放结束后自动回放。 |
preload | preload 属性是用来缓存大体积文件的。它有三个可选值:"none" 不缓存,"auto" 缓存,"metadata" 只缓存文件元信息 |
poster | 这是一个图像 URL,显示到用户播放或快进。 |
src | 要嵌入的视频 URL。可选,可以在 video 块中使用 <source> 元素替代来指定要嵌入的视频。 |
width | 这个属性以 CSS 像素的形式指定视频显示区域的宽度。 |
<audio>
嵌入音频
HTML5 支持的 <audio> 标签用于在如下所示的 HTML 或 XHTML 文档中嵌入语音内容。
<audio src="foo.wav" controls autoplay>
Your browser does not support the <audio> element.
</audio>
当前的 HTML 草案规范还没有指定浏览器应该在 audio 标签中支持哪种音频格式。但是最常用的音频格式是 ogg,mp3和 wav。
我们可以使用带媒体类型以及其他属性的的 <source> 标签指定媒体。Audio 元素允许使用多个 source 元素,并且浏览器会使用第一个认可的格式:
<!DOCTYPE HTML>
<html>
<body>
<audio controls autoplay>
<source src="/html5/audio.ogg" type="audio/ogg" />
<source src="/html5/audio.wav" type="audio/wav" />
Your browser does not support the <audio> element.
</audio>
</body>
</html>
Audio 属性规范
HTML5 audio 标签可以使用多个属性来控制外观,感受以及各种控制功能:
属性 | 描述 |
---|---|
autoplay | 如果指定这个布尔值属性,只要没停止加载数据,音频就会立刻自动开始播放。 |
autobuffer | 如果指定这个布尔值属性,即使没有设置自动播放,音频也会自动开始缓冲。 |
controls | 如果指定这个属性,表示允许用户控制音频播放,包括音量控制,快进以及暂停/恢复播放。 |
loop | 如果指定这个布尔值属性,表示允许音频播放结束后自动回放。 |
preload | 这个属性指定加载页面时加载音频并准备就绪。如果指定自动播放则忽略。 |
src | 要嵌入的音频 URL。可选,可以在音频块里 |
处理媒体事件
HTML5 audio 和 video 标签可以用多个属性利用 JavaScript 控制各种控制功能:
事件 | 描述 |
---|---|
abort | 播放中止时生成这个事件。 |
canplay | 足够的数据可用并且媒体可以播放时生成这个事件。 |
ended | 播放完成时生成这个事件。 |
error | 发生错误时生成这个事件。 |
loadeddata | 媒体第一帧载入完成时生成这个事件。 |
loadstart | 开始加载媒体时生成这个事件。 |
pause | 播放暂停时生成这个事件。 |
play | 播放开始或者恢复时生成这个事件。 |
progress | 定期通知媒体下载进度时生成这个事件。 |
ratechange | 播放速度改变时生成这个事件。 |
seeked | 快进操作完成时生成这个事件。 |
seeking | 快进操作开始时生成这个事件。 |
suspend | 媒体加载被暂停时生成这个事件。 |
volumechange | 音频音量变化时生成这个事件。 |
waiting | 请求操作(比如播放)被延迟,等待另一个操作完成(比如快进)时生成这个事件。 |
设定播放的时间点定位
我们可以指定视频从某时某分某秒开始播放,这是通过设置 currentTime 属性来实现。
我们可以通过 seekable 属性来获得视频有效的播放时间范围。它会返回一个 TimeRanges 对象,能够告诉你有效的开始时间和结束时间。
var mediaElement = document.getElementById('mediaElementID');
mediaElement.seekable.start(0); // 返回开始时间 (秒)
mediaElement.seekable.end(0); // 返回结束时间 (秒)
mediaElement.currentTime = 122; // 定位到第 122 秒播放
mediaElement.played.end(0); // 返回已经播放的时间长度(秒)
设定播放范围
当在网页里嵌入视频/音频文件时, <audio> 或 <video> 元素允许我们提供一些额外的信息来指定播放哪一时间段。实现的方法是在媒体文件后面跟随(“#”)格式的信息。
它的具体语法是这样的:
#t=[开始时间][,结束时间]
时间的表示方法可以使用秒数,也可以提供一个 ”时:分:秒“ 格式的时间(例如 2:05:01 )。
举例:
http://www.webhek.com/video.ogg#t=10,20
指定视频从10秒开始播放,到20秒处结束。
http://www.webhek.com/video.ogg#t=,10.5
指定视频从头开始播放到 10.5 秒处。
http://www.webhek.com/video.ogg#t=,02:00:00
指定视频播放2小时。
http://www.webhek.com/video.ogg#t=60
指定视频从第60秒开始播放,播放到结束。
网友评论