javascript - 如何在 JavaScript 中从 MP3 文件中读取元数据属性?
问题描述
我知道以前有人问过类似的问题,特别是this one,但所有答案通常都涉及以下两件事之一,这两件事我都想避免:
导入新库,或者,
据我所知,使用 FileReader 仅适用于用户输入的文件。
我正在制作一个小游戏,其中包括在选项菜单中切换多个音乐曲目的选项,我希望能够显示曲目标题和艺术家。我可以调整我的歌曲对象,以便将标题、艺术家等信息输入到代码中,但将其作为元数据包含在文件中似乎更简单,因此我只需输入文件名。有什么方法可以在不使用额外库的情况下从用户未输入的文件中读取元数据?这是我正在使用的 Song 对象,虽然它非常简单:
var Song = function(filename)
{
this.intro = new Audio(); // the introduction of the song that leads into a loop
this.intro.src = filename + "-intro.mp3";
var temp = this;
this.intro.addEventListener("ended", function() {
this.currentTime = 0;
temp.loop.currentTime = 0;
temp.loop.play();
});
this.loop = new Audio(); // the main file that will be looped. Also has the relevant metadata
this.loop.src = filename + ".mp3";
this.loop.addEventListener("ended", function() {
this.currentTime = 0;
this.play();
});
};
var songs = [
new Song("track1"),
new Song("track2"),
new Song("track3")
];
解决方案
为此使用 mutag
在您的 html 中添加:
<script src="sanjit1.github.io/mutag/dist/mutag.min.js"></script>
并在您的 js 中添加:
const mutag = window.mutag;
并使用变量filename
,
mutag.fetch(filename).then((tags) => {
console.log(tags);
});
推荐阅读
- javascript - 如何分离并附加到仅相关的 div jQuery
- powershell - 如何使用 http GET 处理登录重定向
- javascript - JS:为移动元素添加缓动
- yii2 - Yii2:使用“joinWith()”时按数据透视表过滤查询
- xamarin.android - 访问 OneDrive 文件 - 最简单的方法
- java - 检查 HashSet 中是否存在数组
- php - 提交表单时接受条款和条件的复选框 - Laravel 8
- python - 我们究竟应该在什么时候在文本预处理管道中执行拼写校正?
- esp32 - 在深度睡眠中保持 ESP32 非 RTC GPIO 引脚状态为高电平
- javascript - 如何在 Reactjs 中将服务器端 Json 数据转换为 react-google-chart 格式