如何解决使用javascript从mp3读取id3标签
| 我知道之前曾有人问过这个问题,但我的情况有所不同。我正在制作chrome应用程序,因此我可以访问它支持的所有最新JavaScript文件api,而不必担心兼容性。更重要的是,我真的很想自己做..即没有任何图书馆。教程或指南即可。毕竟这到底有多困难? 基本上,我有用户添加的mp3 \,我希望能够阅读艺术家和专辑之类的最基本信息(实际上,只有这两个信息对其他人没有任何危害)。 我相信我对id3标签是什么以及如何读取信息有想法。我只需要看一次即可。 谢谢解决方法
不再需要使用binaryajax.js或id3解析器库。在Chrome at,您可以使用
FileReader
和DataView
读取和提取ID3v1信息。仅几行:
http://ericbidelman.tumblr.com/post/8343485440/reading-mp3-id3-tags-in-javascript
, 这个库有很好的文档。我爱GitHub
https://github.com/leetreveil/node-musicmetadata
API
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> } ]
}
, 正如@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;
更不用说大量的纯Java AJAX工作了。
没有理由重新发明这个轮子。但是,如果您出于任何原因要查看代码并重写代码,请参见以下两个库文件:
二进制ajax库
id3解析器
如果您真的想剪切掉任何AJAX并只是从读取已经拥有的文件开始(不使用AJAX,则不然),第二个链接的功能恰好是readTagsFromData
。我建议您从那里开始实现自己的目标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。