HTML5项目笔记4:使用Audio API设计绚丽的HTML5音乐播放器
创作时间:
作者:
@小白创作中心
HTML5项目笔记4:使用Audio API设计绚丽的HTML5音乐播放器
引用
1
来源
1.
https://www.jmwww.net/file/42858.html
HTML5的Audio元素为网页开发者提供了创建自定义音频播放器的能力。本文将详细介绍如何使用HTML5的Audio API设计一个功能完善的音乐播放器,包括浏览器支持情况、常用控制函数、媒体属性以及实际的代码实现。
HTML5 有两个很炫的元素,就是Audio和 Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很不错的应用。
无论是视屏还是音频,都是一个容器文件,包含了一些音频轨道,视频轨道和一些元数据,这些是和你的视频或者音频控件绑定到一块的,这样才形成了一个完整的播放组件。
浏览器支持情况
浏览器 | 支持情况 | 编解码器 |
---|---|---|
Chrome | 3.0 | Theora 、 Vorbis 、Ogg H.264 、 AAC 、MPEG4 |
FireFox | 3.5 | Theora 、 Vorbis 、Ogg |
IE | 不支持 | 无 |
Opera | 10.5 | Theora 、 Vorbis 、Ogg(10.5) VP8、Vorbis 、 WebM(10.6) |
Safari | 3.2 | H.264 、 ACC 、MPEG4 |
常用的控制函数
函数 | 动作 |
---|---|
load() | 加载音频、视频软件 |
play() | 加载并播放音频、视频文件或重新播放暂停的的音频、视频 |
pause() | 暂停出于播放状态的音频、视频文件 |
canPlayType(obj) | 测试是否支持给定的Mini类型的文件 |
只读的媒体属性
只读属性 | 值 |
---|---|
duration | 获取媒体文件的播放时长,以s为单位,如果无法获取,则为NaN |
paused | 如果媒体文件被暂停,则返回true,否则返回false |
ended | 如果媒体文件播放完毕,则返回true |
startTime | 返回起始播放时间 |
error | 返回错误代码 |
currentSrc | 以字符串形式返回正在播放或已加载的文件 |
可脚本控制的属性值
属性 | 值 |
---|---|
autoplay | 自动播放已经加载的的媒体文件 |
loop | 为true的时候则设定为自动播放 |
currentTime | 以s为单位返回从开始播放到目前所花的时间 |
controls | 显示或者隐藏用户控制界面 |
volume | 音量值,从0.0至1.0之间 |
muted | 设置是否静音 |
autobuffer | 是否进行缓冲加载 |
创建音频元素
在页面中添加一个音频元素:
<audio src="../Media/The sound of silence.mp3" controls="controls" autoplay="autoplay"></audio>
在谷歌Chrome浏览器中的效果如下:
controls
指的是用户控制界面,所以我们可以在Web页面中看到上面这个操作面板,包括播放和暂停,播放进度条,音量进度条,和进度时间显示等。autoplay
指的是自动播发已加载的媒体文件,所以我们一打开页面就可以直接播放了
HTML5 Audio API 的界面很强大,功能也很完善,但是我们的Web应用会根据不同的需求、设计风格和界面颜色来要求不同的播放器样式和功能,这就要求我们能基于他们的API 设计出灵活的应用。
设计自定义播放器
接下来,我们设计一款适合我们离线工作系统需要的播放器:
<div id="custom-player">
<button id="play-pause">Play</button>
<input type="range" id="volume" min="0" max="1" step="0.1" value="1">
<input type="range" id="seek" min="0" max="100" value="0">
<span id="current-time">0:00</span>/<span id="duration">0:00</span>
</div>
添加CSS样式
#custom-player {
display: flex;
align-items: center;
}
#play-pause {
margin-right: 10px;
}
#volume, #seek {
flex: 1;
margin: 0 10px;
}
#current-time, #duration {
margin-left: 10px;
}
页面的元素和CSS样式写完之后,就可以看到一个漂亮的音乐播放器的模型了:
添加功能
只是现在的播放器上面的按钮都是空壳,没有任何功能。所以,现在我们就来添加这些功能 , 脚本的顶层框架就用Jquery。
$(document).ready(function() {
var audio = $('audio')[0];
$('#play-pause').click(function() {
if (audio.paused) {
audio.play();
$(this).text('Pause');
} else {
audio.pause();
$(this).text('Play');
}
});
$('#volume').change(function() {
audio.volume = $(this).val();
});
$('#seek').change(function() {
audio.currentTime = ($(this).val() / 100) * audio.duration;
});
audio.addEventListener('timeupdate', function() {
var currentTime = Math.floor(audio.currentTime);
var duration = Math.floor(audio.duration);
$('#current-time').text(formatTime(currentTime));
$('#duration').text(formatTime(duration));
$('#seek').val((currentTime / duration) * 100);
});
function formatTime(seconds) {
var minutes = Math.floor(seconds / 60);
var secs = seconds % 60;
return (minutes < 10 ? '0' + minutes : minutes) + ':' + (secs < 10 ? '0' + secs : secs);
}
});
通过以上代码,我们成功创建了一个功能完善的自定义音乐播放器。这个播放器包含了播放/暂停按钮、音量控制、播放进度条以及当前时间和总时间的显示。你可以根据实际需求进一步扩展和优化这个播放器的功能。
热门推荐
热月政变与雾月政变:改变法国命运的关键事件
杂咏一百首·蒙恬
散热器怎么检查?检查散热器需要关注哪些方面?
关于波斯文化的5本书
独家观察:内娱需要一档全开麦、不修音、一次过的音综吗?
家用充电桩功率大讨论:对你有什么影响?
民国军阀往事:新旧桂系的四大巨头
二战日本黑科技:换装反舰导弹和防空导弹的“大和”号战列舰
张若虚《春江花月夜》原文及翻译
二线城市1月楼市回温,二线城市房价上涨能否持续?
中药炙甘草的功效与作用
红斑狼疮10大忌口水果
红斑狼疮10大忌口水果
桂花树的养殖方法和注意事项,桂花树种植技术
如何根据不同的应用场景选择合适规格的钻尾钉?
抑郁症的主要临床表现及日常注意事项
如何合理调整保险保额?这类保额调整有哪些影响因素?
探索智能驾驶:L2辅助驾驶技术大揭秘
成都至深圳动卧列车开通!设520个卧铺位及“办公区”,每周双向开行各4趟
山楂适合什么地方种植?山楂的种植环境和条件是什么?
最大似然估计详解:从基本概念到具体应用
研究证实:虾青素能明显增强机体局部和全身的免疫能力
小牛电动车电池寿命及保养指南
展台设计的重要性
家用内墙乳胶漆选购指南与涂刷技巧
揭秘物质状态变化:从固态到液态,是吸热还是放热?
杂食性人类为何选择吃素?素食文化的起源
喜火的人适合佩戴什么?喜火的女人干什么发财?
九紫离火年戴紫色还是红色?9紫离火运最忌什么颜色?
疼痛管理指南:从药物到非药物治疗的全方位解析