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 分钟前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国36 分钟前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼37 分钟前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy40 分钟前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT1 小时前
promise & async await总结
前端
Jerry说前后端1 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天1 小时前
A12预装app
linux·服务器·前端
7723891 小时前
解决 Microsoft Edge 显示“由你的组织管理”问题
前端·microsoft·edge
烛阴2 小时前
前端必会:如何创建一个可随时取消的定时器
前端·javascript·typescript
JarvanMo2 小时前
Swift 应用在安卓系统上会怎么样?
前端