如何在hugo生成的网页中插入嵌入式音乐

缘起

在我发布了在网页中嵌入视频的视频后,有网友问如何插入音乐文件并自动播放。就有了这个视频。

定义Shortcode

https://music.163.com/#/song?id=1304708603 为例:

先分析一下嵌入代码的格式

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1304708603&auto=1&height=66"></iframe>

定义 shortcode 代码

<iframe
	frameborder="0" border="1"
	marginwidth="0" marginheight="0"
    width=333 height=77
    src="//music.163.com/outchain/player?type=2&id={{.Get 0 }}&auto=1&height=66"
 >

到这一步,实现和插入视频的方式是一致的。但是尽管有 auto=1 这个参数,但由于目前浏览器的各类限制,自动播放这个功能是不能实现的。

实现自动播放

使用javascript方式实现自动播放,这个方便也是参考了:

html背景音乐自动播放怎么实现? - 墨语的回答 - 知乎 https://www.zhihu.com/question/472325267/answer/1999266585

进行相应的修改后的shortcode代码

<audio id="music1" controls autoplay="autoplay" loop="loop" preload="auto">
	<source src="http://music.163.com/song/media/outer/url?id={{.Get 0 }}.mp3" type="audio/mpeg" />
</audio>

<script>
var audio = document.getElementById('music1');
$("#btn").bind(
	"touchstart", function bf() {
		if(audio !== null) {
			//检测播放是否已暂停.audio.paused 在播放器播放时返回false.
			//alert(audio.paused);
			if(audio.paused) {
				audio.play(); //audio.play();// 这个就是播放
				$("#btn").addClass("active")
				} else {
					audio.pause(); // 这个就是暂停
					$("#btn").removeClass("active")
					}
				}
			})
</script>

使用

下面的2个音乐第一个是直接使用了网易云音乐的分享代码,第二个是会自动播放的代码。

直接使用官方嵌入式代码模式

使用插入音频文件方式

海上一民工

Related