源本科技 | 码上会

HTML 音频

2026/02/10
11
0

学习目标

  • 掌握 <audio> 元素的基本语法与核心属性

  • 理解不同音频格式的浏览器兼容性

  • 能够实现带控件、自动播放、循环播放等常见功能

  • 遵循最佳实践,确保跨浏览器兼容性与用户体验


什么是 <audio>

<audio> 是 HTML5 引入的原生音频播放器,允许网页直接嵌入音频文件(如音乐、语音、音效),无需依赖第三方插件(如 Flash)。

<audio>
  <source src="audio.mp3" type="audio/mpeg">
  <source src="audio.ogg" type="audio/ogg">
  您的浏览器不支持音频播放。
</audio>

优势

  • 原生支持,无需额外库

  • 可通过 CSS/JavaScript 控制

  • 支持响应式设计


核心属性

属性

作用

示例

controls

显示播放控件(播放 / 暂停、进度条、音量)

<audio controls>

autoplay

页面加载后自动播放
注意:多数浏览器会阻止无用户交互的自动播放

<audio autoplay>

loop

循环播放音频

<audio loop>

muted

默认静音

<audio muted>

preload

预加载策略(none/metadata/auto

<audio preload="metadata">

重要限制
出于用户体验考虑,Chrome、Safari、Firefox 等现代浏览器默认禁止带声音的自动播放
若需 autoplay,通常需配合 muted 使用:

<audio autoplay muted>
  <source src="background.mp3" type="audio/mpeg">
</audio>

音频格式与 MIME 类型

不同浏览器对音频格式的支持不同,建议提供至少两种格式以确保兼容性:

格式

MIME 类型

浏览器支持情况

MP3

audio/mpeg

所有现代浏览器(最广泛支持)

OGG

audio/ogg

Chrome, Firefox, Opera(开源格式)

WAV

audio/wav

所有浏览器(但文件体积大,适合短音效)

推荐组合

<audio controls>
  <source src="sound.mp3" type="audio/mpeg">
  <source src="sound.ogg" type="audio/ogg">
  您的浏览器不支持音频播放。
</audio>

浏览器会按顺序尝试加载,使用第一个支持的格式。


常见用法

1. 基础播放器

带控件

<audio controls>
  <source src="music.mp3" type="audio/mpeg">
  您的浏览器不支持音频。
</audio>

2. 自动播放

静音模式

<audio autoplay muted loop>
  <source src="background.mp3" type="audio/mpeg">
</audio>

3. 响应式

CSS 样式

<style>
  .audio-player {
    display: block;
    width: 90%;
    max-width: 600px;
    margin: 20px auto;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
  }
</style>

<audio class="audio-player" controls>
  <source src="podcast.mp3" type="audio/mpeg">
</audio>

4. 多格式兼容

<audio controls>
  <!-- 优先 MP3(兼容性最好) -->
  <source src="song.mp3" type="audio/mpeg">
  <!-- 备用 OGG(开源,压缩率高) -->
  <source src="song.ogg" type="audio/ogg">
  <!-- 最后尝试 WAV(保真度高,体积大) -->
  <source src="song.wav" type="audio/wav">
  您的浏览器不支持此音频格式。
</audio>

JavaScript 控制

可通过 JavaScript 动态控制播放行为:

<audio id="myAudio">
  <source src="alert.mp3" type="audio/mpeg">
</audio>

<button onclick="playAudio()">播放</button>
<button onclick="pauseAudio()">暂停</button>

<script>
  const audio = document.getElementById("myAudio");
  
  function playAudio() {
    audio.play().catch(e => console.log("播放被阻止:", e));
  }
  
  function pauseAudio() {
    audio.pause();
  }
</script>

注意play() 方法返回 Promise,在自动播放被阻止时会 reject,需用 .catch() 处理。