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);
}
});
通过以上代码,我们成功创建了一个功能完善的自定义音乐播放器。这个播放器包含了播放/暂停按钮、音量控制、播放进度条以及当前时间和总时间的显示。你可以根据实际需求进一步扩展和优化这个播放器的功能。
热门推荐
猫咪可以吃甜食吗?
成功的智慧结晶!铸就辉煌的15篇经典座右铭来了
奇趣水果榜总有它!巧克力布丁果如何扎根中山?丨寻味“中山香农”
凤凰单丛和武夷岩茶有什么区别?岩茶的香气可以用来分类单丛吗?
当Windows 10输入法停止工作且缺少IME文件时,我们该如何恢复?
人工智能与教育的变革:大学生如何使用AI提升学习效率?
项目成本测算管理方式有哪些
如何查询商标注册的具体时间?
深中通道牵线:深江很近,“邑”往情“深”!
残忍!稀有杂交鲸鱼被冰岛捕杀。
从蘑菇里来的麦角硫因,要从健康产业崛起
苏州纳米所王锦ACS Nano综述:可穿戴气凝胶用于人体热管理和智能器件
一文读懂Token:自然语言处理中的基石概念
从利率到附加费,贷款时这7个细节决定成败!
在Windows WSL Ubuntu上安装原生Docker
长孙皇后与观音婢:佛教影响下的名字寓意
春季偏头痛频发?5大诱因揭秘,轻松应对不再头疼!
【中国公民健康素养66条(2024年版)(17)】为什么要关注血糖变化?
多人称住海南海花岛疑似“海砂房”险象环生,当地住建局回应
智能AI投影仪系统方案设计详解
光子脱毛效果如何?专业医生详解其原理、效果及安全性
激光脱毛效果好吗
如何在进度推进会中高效沟通和解决问题?
英国经常吃什么肉
水芹的高产种植技术
一文读懂:压缩空气管道管材的选型与安装
老年斑是人体衰老的信号?做好五件事可有效改善!
为什么有的人满脸老年斑,有的人却干干净净?
你真的了解消化不良吗?
紫菜虾皮豆腐汤:清爽美味的家庭必备菜谱