在HTML5之前,网页中播放音频大多需要依赖Flash等插件,不仅兼容性差还存在安全风险。HTML5引入的audio标签原生支持音频播放,让开发者可以轻松在页面中嵌入音频文件,还能通过JavaScript实现自定义控制逻辑。

audio标签基本语法与属性
audio标签的基本结构非常简单,核心属性决定了音频的播放行为,下面是最基础的嵌入写法:
<audio src="audio/music.mp3" controls> 您的浏览器不支持audio标签,请升级浏览器 </audio>
常用的属性说明如下:
- src:指定音频文件的路径,支持相对路径和绝对路径
- controls:添加该属性后会显示浏览器默认的播放控制面板,包含播放暂停、进度条、音量调节等按钮
- autoplay:添加后页面加载完成会自动播放音频,但多数浏览器为了用户体验会限制自动播放,通常需要配合muted属性使用
- loop:添加后音频播放结束会自动循环播放
- muted:添加后音频默认是静音状态
- preload:设置音频的预加载策略,可选值有none(不预加载)、metadata(只预加载元数据,如时长)、auto(尽可能预加载)
支持的音频格式
不同浏览器对音频格式的支持不同,为了保证兼容性,通常会提供多种格式的音频文件,通过<source>标签指定:
<audio controls> <source src="audio/music.mp3" type="audio/mpeg"> <source src="audio/music.ogg" type="audio/ogg"> <source src="audio/music.wav" type="audio/wav"> 您的浏览器不支持audio标签,请升级浏览器 </audio>
常见格式的支持情况如下:
| 格式 | MIME类型 | Chrome | Firefox | Safari |
|---|---|---|---|---|
| MP3 | audio/mpeg | 支持 | 支持 | 支持 |
| OGG | audio/ogg | 支持 | 支持 | 不支持 |
| WAV | audio/wav | 支持 | 支持 | 支持 |
通过JavaScript控制音频
除了使用默认的controls面板,我们还可以通过JavaScript调用audio对象的属性和方法,实现自定义的播放控制逻辑。
常用属性和方法
- play():调用后播放音频
- pause():调用后暂停音频
- currentTime:获取或设置当前播放的位置,单位是秒
- duration:只读属性,获取音频的总时长,单位是秒
- volume:设置或获取音量,取值范围是0到1
- paused:只读属性,判断音频是否处于暂停状态,返回布尔值
自定义控制示例
下面是一个简单的自定义播放暂停按钮的实现:
<audio id="myAudio" src="audio/music.mp3"></audio>
<button onclick="togglePlay()">播放/暂停</button>
<script>
const audio = document.getElementById('myAudio');
function togglePlay() {
if (audio.paused) {
audio.play();
} else {
audio.pause();
}
}
</script>还可以监听音频的事件来更新UI状态,比如监听timeupdate事件更新播放进度:
const audio = document.getElementById('myAudio');
// 监听播放进度变化
audio.addEventListener('timeupdate', function() {
const currentTime = audio.currentTime;
const totalTime = audio.duration;
console.log(`当前播放进度:${currentTime}/${totalTime}`);
});
// 监听播放结束事件
audio.addEventListener('ended', function() {
console.log('音频播放结束');
});注意事项
使用audio标签时需要注意几个常见问题:第一,自动播放功能受浏览器限制,多数浏览器要求用户至少有过交互行为后才允许自动播放有声音频,所以自动播放场景建议默认静音;第二,音频文件路径要正确,否则会触发error事件,可以通过监听error事件处理加载失败的情况;第三,自定义控制时建议做好状态同步,比如播放时按钮显示暂停图标,暂停时显示播放图标,提升用户体验。
HTML5_audioaudio标签音频嵌入音频控制修改时间:2026-06-02 03:26:28