js实现播放器
使用HTML5 Audio API实现基础播放器
HTML5提供了<audio>标签和JavaScript API,可以轻松实现音频播放功能。以下是一个基础实现示例:
<audio id="player" src="audio.mp3"></audio>
<div>
<button onclick="document.getElementById('player').play()">播放</button>
<button onclick="document.getElementById('player').pause()">暂停</button>
<input type="range" id="volume" min="0" max="1" step="0.1" value="1"
onchange="document.getElementById('player').volume = this.value">
</div>
创建更完整的播放器界面
使用JavaScript可以构建功能更丰富的播放器:
const player = document.getElementById('player');
const playBtn = document.getElementById('playBtn');
const progress = document.getElementById('progress');
playBtn.addEventListener('click', () => {
if (player.paused) {
player.play();
playBtn.textContent = '暂停';
} else {
player.pause();
playBtn.textContent = '播放';
}
});
player.addEventListener('timeupdate', () => {
progress.value = (player.currentTime / player.duration) * 100;
});
progress.addEventListener('input', () => {
player.currentTime = (progress.value / 100) * player.duration;
});
实现播放列表功能
通过数组管理播放列表并实现切换功能:
const playlist = [
{ title: '歌曲1', src: 'song1.mp3' },
{ title: '歌曲2', src: 'song2.mp3' }
];
let currentTrack = 0;
function loadTrack(index) {
player.src = playlist[index].src;
document.getElementById('trackTitle').textContent = playlist[index].title;
player.play();
}
document.getElementById('nextBtn').addEventListener('click', () => {
currentTrack = (currentTrack + 1) % playlist.length;
loadTrack(currentTrack);
});
document.getElementById('prevBtn').addEventListener('click', () => {
currentTrack = (currentTrack - 1 + playlist.length) % playlist.length;
loadTrack(currentTrack);
});
添加可视化效果
使用Web Audio API创建音频可视化效果:
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const analyser = audioContext.createAnalyser();
const source = audioContext.createMediaElementSource(player);
source.connect(analyser);
analyser.connect(audioContext.destination);
analyser.fftSize = 256;
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
function visualize() {
analyser.getByteFrequencyData(dataArray);
const canvas = document.getElementById('visualizer');
const ctx = canvas.getContext('2d');
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(${barHeight + 100}, 50, 50)`;
ctx.fillRect(i * barWidth, canvas.height - barHeight, barWidth, barHeight);
}
requestAnimationFrame(visualize);
}
player.addEventListener('play', () => {
audioContext.resume().then(() => {
visualize();
});
});
响应式播放器设计
使用CSS使播放器适应不同屏幕尺寸:
.player-container {
max-width: 500px;
margin: 0 auto;
padding: 20px;
background: #f5f5f5;
border-radius: 10px;
}
.controls {
display: flex;
justify-content: center;
gap: 10px;
margin: 15px 0;
}
progress {
width: 100%;
height: 5px;
}
@media (max-width: 600px) {
.player-container {
padding: 10px;
}
button {
padding: 8px 12px;
}
}
这些代码示例展示了如何从基础到高级实现JavaScript播放器功能,可以根据需求进行组合和扩展。







