我知道之前有人问这个问题,但我的情况有点不同。我正在制作一个Chrome应用程序,因此我可以访问它支持的所有最新JavaScript文件,而无需担心兼容性。更多我真的想这样做我自己..即没有任何图书馆。教程或指南都可以。毕竟它真的有多难?
基本上我有用户添加的mp3,我希望能够阅读艺术家和专辑等大多数基本信息(实际上,只有这两个,但其他人不会有任何伤害)。
我相信我知道id3标签是什么以及如何读取信息。我只需要在行动中看到它一次。 感谢
答案 0 :(得分:12)
不再需要使用binaryajax.js或id3解析器lib。在Chrome中,您可以使用FileReader
和DataView
来阅读和提取ID3v1信息。这只是几行:
http://ericbidelman.tumblr.com/post/8343485440/reading-mp3-id3-tags-in-javascript
答案 1 :(得分:7)
这个库有很好的文档。我喜欢GitHub
https://github.com/leetreveil/node-musicmetadata
var fs = require('fs');
var mm = require('musicmetadata');
//create a new parser from a node ReadStream
var parser = new mm(fs.createReadStream('sample.mp3'));
//listen for the metadata event
parser.on('metadata', function (result) {
console.log(result);
});
这将输出标准音乐元数据:
{ artist : ['Spor'],
album : 'Nightlife, Vol 5.',
albumartist : [ 'Andy C', 'Spor' ],
title : 'Stronger',
year : '2010',
track : { no : 1, of : 44 },
disk : { no : 1, of : 2 },
picture : [ { format : 'jpg', data : <Buffer> } ]
}
答案 2 :(得分:3)
正如@joekarl指出的那样,有些库可以帮到你。我看到了你的信息请求,所以你可以自己做,但这里有来自nihilogic.dk图书馆500多行的宝石:
var iLong = bBigEndian ?
(((((iByte1 << 8) + iByte2) << 8) + iByte3) << 8) + iByte4
: (((((iByte4 << 8) + iByte3) << 8) + iByte2) << 8) + iByte1;
if (iLong < 0) iLong += 4294967296;
return iLong;
更不用说大量的纯Javascript AJAX工作了。
没有理由重新发明这个轮子。但是,如果您想查看代码并因任何原因重写代码,这里有两个库文件:
binary ajax library
id3 parser
如果你真的想要删除任何一个AJAX并且只是开始阅读你已经拥有的文件(不知何故,没有AJAX),第二个链接就有一个叫做巧合的函数readTagsFromData
。我建议你从那里开始实现目标。