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实现自适应四宫格放视频
相关推荐
excel14 小时前
前端加密的作用与使用场景
前端
计算机魔术师15 小时前
纽约时报版权诉讼披露:微软高管内部称训练 AI 是人类历史上最大规模劳动窃取
前端
去伪存真15 小时前
大模型的参数量为什么那么大?
前端·人工智能
IT_陈寒15 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端
高级程序源16 小时前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计
八荒启·交互动画17 小时前
# Web特效020—让 Web 特效真正动起来:时间循环应该怎么接
前端·webgl·网页特效·八荒启-交互动画·八荒启
动恰客流统计17 小时前
线下零售数字化浪潮下,客流统计的3个核心发展趋势
大数据·前端·人工智能
lizz227617 小时前
Babel插件手册
javascript
用户9385156350717 小时前
从小米前端面试题,彻底搞懂闭包、作用域链与 useState 惰性初始化
前端·面试
粥里有勺糖18 小时前
视野修炼第133期 | Native 回春了?
前端·github·agent