当前位置:首页 > JavaScript

js实现音乐播放器

2026-03-01 07:39:12JavaScript

基础音乐播放器实现

使用HTML5的<audio>元素结合JavaScript控制播放功能。以下是最简实现代码:

<audio id="player" src="music.mp3"></audio>
<div>
  <button onclick="document.getElementById('player').play()">播放</button>
  <button onclick="document.getElementById('player').pause()">暂停</button>
  <input type="range" onchange="document.getElementById('player').volume = this.value/100">
</div>

增强型播放器功能

创建具有完整功能的播放器对象:

class MusicPlayer {
  constructor() {
    this.audio = new Audio();
    this.playlist = [];
    this.currentIndex = 0;
    this.isPlaying = false;
  }

  addTrack(url) {
    this.playlist.push(url);
  }

  play(index) {
    if (index !== undefined) this.currentIndex = index;
    this.audio.src = this.playlist[this.currentIndex];
    this.audio.play();
    this.isPlaying = true;
  }

  pause() {
    this.audio.pause();
    this.isPlaying = false;
  }

  next() {
    this.currentIndex = (this.currentIndex + 1) % this.playlist.length;
    this.play();
  }

  prev() {
    this.currentIndex = (this.currentIndex - 1 + this.playlist.length) % this.playlist.length;
    this.play();
  }

  setVolume(level) {
    this.audio.volume = level;
  }
}

播放器UI集成

结合DOM操作创建可视化界面:

const player = new MusicPlayer();
player.addTrack('track1.mp3');
player.addTrack('track2.mp3');

document.getElementById('playBtn').addEventListener('click', () => {
  player.isPlaying ? player.pause() : player.play();
});

document.getElementById('nextBtn').addEventListener('click', () => {
  player.next();
});

document.getElementById('volume').addEventListener('input', (e) => {
  player.setVolume(e.target.value / 100);
});

进度条与时间显示

添加播放进度监控功能:

const progressBar = document.getElementById('progress');
const timeDisplay = document.getElementById('time');

player.audio.addEventListener('timeupdate', () => {
  const percent = (player.audio.currentTime / player.audio.duration) * 100;
  progressBar.value = percent;

  const mins = Math.floor(player.audio.currentTime / 60);
  const secs = Math.floor(player.audio.currentTime % 60);
  timeDisplay.textContent = `${mins}:${secs < 10 ? '0' : ''}${secs}`;
});

progressBar.addEventListener('input', (e) => {
  const seekTime = (e.target.value / 100) * player.audio.duration;
  player.audio.currentTime = seekTime;
});

播放列表渲染

动态生成播放列表DOM:

function renderPlaylist() {
  const listContainer = document.getElementById('playlist');
  listContainer.innerHTML = '';

  player.playlist.forEach((track, index) => {
    const item = document.createElement('div');
    item.className = 'playlist-item';
    item.textContent = `Track ${index + 1}`;
    item.addEventListener('click', () => player.play(index));
    listContainer.appendChild(item);
  });
}

音频可视化效果

使用Web Audio API创建频谱分析:

const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const analyser = audioContext.createAnalyser();
const source = audioContext.createMediaElementSource(player.audio);
source.connect(analyser);
analyser.connect(audioContext.destination);

function visualize() {
  const canvas = document.getElementById('visualizer');
  const ctx = canvas.getContext('2d');
  const bufferLength = analyser.frequencyBinCount;
  const dataArray = new Uint8Array(bufferLength);

  function draw() {
    requestAnimationFrame(draw);
    analyser.getByteFrequencyData(dataArray);
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    const barWidth = canvas.width / bufferLength;
    for (let i = 0; i < bufferLength; i++) {
      const barHeight = dataArray[i] / 2;
      ctx.fillStyle = `rgb(50, ${barHeight + 100}, 200)`;
      ctx.fillRect(i * barWidth, canvas.height - barHeight, barWidth, barHeight);
    }
  }

  draw();
}

js实现音乐播放器

标签: 播放器音乐
分享给朋友:

相关文章

vue实现音乐页面

vue实现音乐页面

使用 Vue 实现音乐页面 项目初始化 使用 Vue CLI 或 Vite 创建一个新的 Vue 项目。确保安装了必要的依赖,如 vue-router 和 axios。 npm create vu…

Vue加音乐功能实现

Vue加音乐功能实现

Vue 中实现音乐播放功能 基本音频播放实现 在 Vue 项目中可以通过 HTML5 的 <audio> 元素实现基础音乐播放功能。在组件模板中添加 <audio> 元素并绑定…

网易云音乐vue实现

网易云音乐vue实现

实现网易云音乐Vue项目的基本步骤 项目初始化与依赖安装 使用Vue CLI创建项目框架,安装必要依赖如vue-router、axios、vuex等。网易云音乐API可使用开源项目NeteaseClo…

vue实现音乐上下曲

vue实现音乐上下曲

Vue 实现音乐上下曲功能 音乐播放器基础结构 在 Vue 中实现音乐上下曲功能,首先需要构建一个基本的音乐播放器组件。这个组件包含音频播放器、播放控制按钮以及播放列表。 <template…

用js写实现音乐播放器

用js写实现音乐播放器

基础音乐播放器实现 创建一个简单的HTML结构,包含播放/暂停按钮、进度条和音量控制。 <!DOCTYPE html> <html> <head> &l…

js实现音乐

js实现音乐

使用Web Audio API播放音乐 Web Audio API提供强大的音频处理能力,适合实现音乐播放、音效控制等需求。 // 创建音频上下文 const audioContext…