4.3 使用HTML5音频和视频
现代浏览器都支持HTML5的audio元素和video元素,如IE 9.0+、Firefox 3.5+、Opera 10.5+、Chrome 3.0+、Safari 3.2+等。
4.3.1 使用<audio>标签
视频讲解
<audio>标签可以播放声音文件或音频流,支持Ogg Vorbis、MP3、WAV等音频格式,其用法如下。
<audio src="samplesong.mp3" controls="controls"></audio>
其中src属性用于指定要播放的声音文件,controls属性用于设置是否显示工具条。<audio>标签可用的属性如表4.3所示。
表4.3 <audio>标签支持属性
提示:如果浏览器不支持<audio>标签,可以在<audio>与</audio>标识符之间嵌入替换的HTML字符串,这样旧的浏览器就可以显示这些信息。例如:
<audio src=" test.mp3" controls="controls"> 您的浏览器不支持audio标签。 </audio>
替换内容可以是简单的提示信息,也可以是一些备用音频插件,或者是音频文件的链接等。
【示例1】<audio>标签可以包裹多个<source>标签,用来导入不同的音频文件,浏览器会自动选择第一个可以识别的格式进行播放。
<audio controls="controls"> <source src="medias/test.ogg" type="audio/ogg"> <source src="medias/test.mp3" type="audio/mpeg"> 您的浏览器不支持audio标签。 </audio>
以上代码在Chrome浏览器中的运行结果如图4.8所示,可以看到出现一个比较简单的音频播放器,包含了播放、暂停、位置、时间显示、音量控制等常用控件按钮。
图4.8 播放音频
【补充】
<source>标签可以为<video>和<audio>标签定义多媒体资源,它必须包裹在<video>或<audio>标识符内。<source>标签包含3个可用属性:
media:定义媒体资源的类型。
src:定义媒体文件的URL。
type:定义媒体资源的MIME类型。如果媒体类型与源文件不匹配,浏览器可能会拒绝播放。可以省略type属性,让浏览器自动检测编码方式。
为了兼容不同浏览器,一般使用多个<source>标签包含多种媒体资源。对于数据源,浏览器会按照声明顺序进行选择,如果支持的不止一种,那么浏览器会优先播放位置靠前的媒体资源。数据源列表的排放顺序应按照用户体验由高到低,或者服务器消耗由低到高列出。
【示例2】下面示例演示了如何在页面中插入背景音乐:在<audio>标签中设置autoplay和loop属性,详细代码如下所示。
<audio autoplay loop> <source src="medias/test.ogg" type="audio/ogg"> <source src="medias/test.mp3" type="audio/mpeg"> 您的浏览器不支持audio标签。 </audio>
4.3.2 使用<video>标签
视频讲解
<video>标签可以播放视频文件或视频流,支持Ogg、MPEG 4、WebM等视频格式,其用法如下。
<video src="samplemovie.mp4" controls="controls"></video>
其中,src属性用于指定要播放的视频文件,controls属性用于提供播放、暂停和音量控件。<video>标签可用的属性如表4.4所示。
表4.4 <video>标签支持属性
【补充】
HTML5的<video>标签支持3种常用的视频格式,简单说明如下。
Ogg:带有Theora视频编码和Vorbis音频编码的Ogg文件。
MPEG 4:带有H.264视频编码和AAC音频编码的MPEG 4文件。
WebM:带有VP 8视频编码和Vorbis音频编码的WebM文件。
浏览器支持情况:Safari 3+、Firefox 4+、Opera 10+、Chrome 3+、IE 9+等。
提示:如果浏览器不支持<video>标签,可以在<video>与</video>标识符之间嵌入替换的HTML字符串,这样旧的浏览器就可以显示这些信息。例如:
<video src=" test.mp4" controls="controls"> 您的浏览器不支持video标签。 </video>
【示例1】下面示例使用<video>标签在页面中嵌入一段视频,然后使用<source>标签链接不同的视频文件,浏览器会自己选择第一个可以识别的格式。
<video controls> <source src="medias/trailer.ogg" type="video/ogg"> <source src="medias/trailer.mp4" type="video/mp4"> 您的浏览器不支持video标签。 </video >
以上代码在Chrome浏览器中运行时,当鼠标经过播放画面,可以看到出现一个比较简单的视频播放控制条,包含了播放、暂停、位置、时间显示、音量控制等常用控件,如图4.9所示。
当为<video>标签设置controls属性,可以在页面上以默认方式进行播放控制。如果不设置controls属性,那么在播放的时候就不会显示控制条界面。
【示例2】通过设置autoplay属性,不需要播放控制条,音频或视频文件就会在加载完成后自动播放。
图4.9 播放视频
<video autoplay> <source src="medias/trailer.ogg" type="video/ogg"> <source src="medias/trailer.mp4" type="video/mp4"> 您的浏览器不支持video标签。 </video >
也可以使用JavaScript脚本控制媒体播放,简单说明如下:
load():可以加载音频或者视频文件。
play():可以加载并播放音频或视频文件,除非已经暂停,否则默认从开头播放。
pause():暂停处于播放状态的音频或视频文件。
canPlayType(type):检测video元素是否支持给定MIME类型的文件。
【示例3】下面示例演示如何通过移动鼠标来触发视频的play和pause功能。设计当用户移动鼠标光标到视频界面上时,播放视频;如果移出鼠标光标,则暂停视频播放。
<video id="movies" onmouseover="this.play()" onmouseout="this.pause()" autobuffer="true" width="400px" height="300px"> <source src="medias/trailer.ogv" type='video/ogg; codecs="theora, vorbis"'> <source src="medias/trailer.mp4" type='video/mp4'> </video>
上面代码在浏览器中预览,显示效果如图4.10所示。
图4.10 使用鼠标控制视频播放