媒体API
在HTML5之前视频和音频通常是在浏览器上使用插件进行播放的,HTML5的媒体API提供了一种元素标签来包含音频和视频的标准,可以做到无插件播放。
首先HTML5媒体支持的格式
| 名称 | 格式 |
|---|---|
| MP3 | 音频 |
| MPEG4 | 适用于音频、视频 |
| Wav | 音频文件 |
| Ogg | 媒体容器格式 |
| WebM | 视频文件格式 |
目前对HTML5支持的常用音频格式有三种:
- MP3格式,文件后缀名为.mp3
- Ogg格式,文件后缀名为.ogg
- Wav格式,文件后缀名为.wav
对HTML5支持的常用视频格式有三种
- MPEG4格式,带有H.264视频编码和AAC音频编码,文件后缀名为.mp4
- Ogg格式,带有Theoras视频编码和Voribs音频编码,文件后缀名为.ogg
- WebM格式,带有VP8视频编码和Vorbis音频编码,文件后缀名为.webm
目前没有哪种音频格式和视频格式是能被所有浏览器支持,所以在开发过程中要明确用那种格式,或者准备好两种格式备用
音频标签
audio
<audio src="./songs/周杰伦 - 花海.mp3" controls></audio>
这样就可以播放歌曲了,src属性是歌曲的路径或者URL地址,controls属性是播放器控件,显示播放按钮、进度条等控件。
audio属性介绍
| 属性名称 | 值 | 解释 |
|---|---|---|
| autoplay | autoplay | 当前音频准备就绪后自动播放 |
| controls | controls | 显示播放、暂停按钮和声音调节控件 |
| loop | loop | 当音频结束后自动重新播放 |
| muted | muted | 静音状态 |
| preload | preload | 音视频预加载、并准备播放、该属性不同时和autoplay使用 |
| src | src | 播放音视频的url地址 |
音频多样性
可以在audio标签中使用source标签指定多个音频文件格式,浏览器会按照顺序来使用第一个可识别的格式文件
<audio controls>
<source src="./songs/周杰伦 - 花海.ogg">
<source src="./songs/周杰伦 - 花海.mp3">
对不起,您的浏览器不支持播放
</audio>
如果都不支持,那么就会显示下面的那行字
对不起,您的浏览器不支持播放
如果你不想要他自己的播放控件,可以使用javascript自定义控件
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>媒体API的简单应用</title> <style> </style> </head> <body> <!-- controls 添加音乐播放器控件--> <audio id="music"> <source src="./songs/周杰伦 - 花海.ogg"> <source src="./songs/周杰伦 - 花海.mp3"> 对不起,您的浏览器不支持播放 </audio> <button id="btn">播放</button> <script> let music=document.getElementById('music'); let btn=document.getElementById('btn'); btn.addEventListener('click',function(){ if(music.paused){ music.play(); btn.innerHTML='暂停'; } else{ music.pause(); btn.innerHTML='播放'; } }) </script> </body> </html>视频标签
video
<video src="./video/莫愁乡--(OfficialMusicVideo)亚细亚旷世奇才.mp4" controls></video>
这样就可以播放视频了
| 属性名称 | 值 | 解释 |
|---|---|---|
| autoplay | autoplay | 当前视频准备就绪后自动播放 |
| controls | controls | 显示播放、暂停按钮和声音调节控件 |
| loop | loop | 当视频结束后自动重新播放 |
| preload | preload | 音视频预加载、并准备播放、该属性不同时和autoplay使用 |
| src | src | 播放音视频的url地址 |
| width | 像素值 | 视频宽度 |
| height | 像素值 | 视频高度 |
和音频标签一样,autoplay和perload不能同时使用,其他的都可以同时使用,如果没有指定视频大小,那么视频大小就会按照原尺寸来
js实现播放功能
首先除去控件显示,然后再手写按钮,用js来实现功能
<video src="./video/莫愁乡--(OfficialMusicVideo)亚细亚旷世奇才.mp4#t=100,105" id="mv"></video>
<div>
<button id="start">播放</button>
<button id="big">画面放大</button>
<button id="small">画面缩小</button>
</div>
#t=100,105——播放时间范围
这个是控制播放时间起止的,src=“url地址#t=StartTime,EndTime” ,这样写之后视频就会直接在规定的时间段内播放
然后再一一实现播放、画面放大、画面缩小的功能
播放功能
对视频是否在播放进行判断,然后再更改其中内容
//播放暂停功能
start.addEventListener('click',function(){
if(mv.paused){
mv.play();
start.innerHTML='暂停';
}
else{
mv.pause();
start.innerHTML='播放';
}
console.log(mv.offsetWidth);
})
画面放大,缩小功能
改变width大小,即可实现放大缩小功能
//画面放大功能
big.addEventListener('click',function(){
mv.width=1200;
})
small.addEventListener('click',function(){
mv.width=400;
})
媒体文件播放时间跳转
使用媒体文件的currentTime属性来制造时间节点,进行时间的跳转
var mv=docment.getElementById("mv");
function changetime(){
mv.currentTime=60;
//跳转到60秒节点上
mv.play();
}
获取媒体播放时间
使用媒体标签的seekable属性
- seekable属性的start(index)方法用于获取媒体播放的开始时间
- seekable属性的end(index)方法用于获取媒体播放的结束时间
- 其中index表示媒体对象的来源序号,默认只有一个的情况下填数字0
//获取播放开始时间
mv.seekable.start(0);
//获取播放结束时间
mv.seekable.end(0);
注意:只有当媒体文件加载完后才可以使用((mv.seekable.length > 0)
获取媒体播放的当前播放时间
played属性
获取播放的当前时间点
mv.played.end(0);
终止媒体文件的下载
//首先终止媒体文件的播放
mv.pause();
//然后去除媒体文件的src属性
mv.removeAttribute("src");
//或者把src设为空值