使用javascript从mp3读取id3标签

时间:2011-06-13 15:18:45

标签: javascript audio

我知道之前有人问这个问题,但我的情况有点不同。我正在制作一个Chrome应用程序,因此我可以访问它支持的所有最新JavaScript文件,而无需担心兼容性。更多我真的想这样做我自己..即没有任何图书馆。教程或指南都可以。毕竟它真的有多难?

基本上我有用户添加的mp3,我希望能够阅读艺术家和专辑等大多数基本信息(实际上,只有这两个,但其他人不会有任何伤害)。

我相信我知道id3标签是什么以及如何读取信息。我只需要在行动中看到它一次。 感谢

3 个答案:

答案 0 :(得分:12)

不再需要使用binaryajax.js或id3解析器lib。在Chrome中,您可以使用FileReaderDataView来阅读和提取ID3v1信息。这只是几行:

http://ericbidelman.tumblr.com/post/8343485440/reading-mp3-id3-tags-in-javascript

答案 1 :(得分:7)

这个库有很好的文档。我喜欢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> } ]
}

答案 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。我建议你从那里开始实现目标。