html播放本地音乐

本地有多个音乐文件,想用 html 逐个播放,或循环播放,并设置初始音量。

audio

在 html 中播放音乐文件用 audio 标签:

  • controls 启用控制按钮,如进度条、播放、音量、速度等。不加不显示任何 widget。
  • autoplay 理应启用自动播放,但浏览器似乎禁止自动播放,故目前没什么用。
  • muted 静音。
html 复制代码
<!DOCTYPE html>
<html>
<body>

<audio controls autoplay>
	<source src="C:/Users/tom/Music/Wonderful U - 张含韵.mp3" type="audio/mpeg">
	Failed.
</audio>

<br/>

<audio controls muted>
	<source src="C:/Users/tom/Music/Sacred Play Secret Place - Matryoshka.m4a" type="audio/x-m4a">
	Failed.
</audio>

</body>
</html>

Set Volume Automatically

想在打开 html 文件时,自动设置某个音量,如 20%,而不是默认的最大声、或 muted 静音。用到 javascript:

  • class 标记需要调音量的 audio;
  • script 内用 javascript 选中这些 audio,并设置其音量。
html 复制代码
<!DOCTYPE html>
<body>
<!-- 用 `a` 标记需要自动校音量的 audio -->
<audio class="a" controls>
	<source src="C:/Users/tom/Music/Wonderful U - 张含韵.mp3" type="audio/mpeg">
	Failed.
</audio>
<br/>
<audio class="a" controls>
	<source src="C:/Users/tom/Music/Sacred Play Secret Place - Matryoshka.m4a" type="audio/x-m4a">
	Failed.
</audio>


<script>
	// 添加事件:加载时自动执行
	document.addEventListener("DOMContentLoaded", function() {
		var audioPlayers = document.querySelectorAll('.a'); // 根据 `a` 选 audio 元素
		audioPlayers.forEach(function(player) {
			player.volume = 0.2; // set initial volume
		});
	});
</script>
</body>
</html>

Play a List

有多个音乐文件,想顺序或循环播放它们,同样用 javascript 函数控制。

  • 浏览器可能禁止未有交互就自动播放,故一开头要手动点播放,但后面可连播。
html 复制代码
<!DOCTYPE html>
<body>
<!-- 放一个空 audio 元素 -->
<audio id="auto-audio" controls autoplay></audio>

<script>
	const path = 'C:/Users/tom/Music/'; // 音乐文件都在这个目录下
	const playlist = [
		'嗵嗵 - DOUDOU.mp3',
		'我拿什么留住你 - FloruitShow 福禄寿.mp3',
		'琢磨 - 许靖韵.mp3'
	];

	let currentTrack = 0; // 目前播放的文件下标
	const audioPlayer = document.getElementById('auto-audio');

	// 播放函数
	function playTrack(index) {
		audioPlayer.src = path + playlist[index]; // 完整路径
		audioPlayer.volume = 0.2; // 校音量
		audioPlayer.play().catch(error => {
			console.log("%cAutoplay prevented:", "color: red;", error);
		});
	}

	// 加载时执行
	document.addEventListener("DOMContentLoaded", function() {
		// 播放第一首(可能被浏览器阻止自动播放而失败)
		playTrack(currentTrack);
		// 添加事件:播放结束后自动放下一首
		audioPlayer.addEventListener('ended', function () {
			// 顺序播放
			if (currentTrack < playlist.length) {
                playTrack(currentTrack);
            }
            // 循环播放
			// currentTrack = (currentTrack + 1) % playlist.length;
			// playTrack(currentTrack);
		});
	});
</script>
</body>
</html>

References

  1. html用css grid实现自适应四宫格放视频
相关推荐
清寒_1 小时前
分层理解AI架构,降低对AI复杂度的恐惧
前端·人工智能·ai编程
牧码岛2 小时前
Web前端之JavaScrip中的Array、Object、Map和Set详解
前端·javascript·web·web前端
Bigger2 小时前
😮‍💨 有了 AI 之后,我怎么感觉反而更累了?
前端·aigc·ai编程
Dxy12393102162 小时前
HTML中使用Canvas动态图形渲染:解锁Web交互新维度
前端·html·图形渲染
西陵2 小时前
如何实现 Claude 生成式 UI?一套可落地的工程方案
前端·人工智能·ai编程
FlyWIHTSKY2 小时前
Vue 3 + 原生 CSS Float
前端·css·vue.js
energy_DT2 小时前
2026海上钻井平台可视化运维:红外热成像、超声波、AI视频巡检、数字孪生
前端
ONLYOFFICE2 小时前
如何将 Word 集成到 Web 应用程序? 5 种方法详解与对比
前端·word·onlyoffice
533_2 小时前
[pinia] vue3中监听pinia值的变化
前端·javascript·vue.js
AlenLi2 小时前
JavaScript - 相对实用的Axios二次封装
前端·javascript