繁体   English   中英

使用 javascript 从 mp3 读取 id3 标签

[英]read id3 tags from mp3 using javascript

我知道这个问题以前在这里被问过,但我的情况有点不同。 我正在制作一个 chrome 应用程序,因此我可以访问它支持的所有最新 JavaScript 文件 api,而不必担心兼容性。 更重要的是,我真的很想自己做这个..即没有任何图书馆。 教程或指南就可以了。 毕竟这到底有多难?

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

我相信我知道 id3 标签是什么以及如何读取信息。 我只需要看一次它的实际效果。 谢谢

不再需要使用 binaryajax.js 或 id3 解析器库。 在 Chrome 中,您可以使用FileReaderDataView来读取和提取 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);
});

这将 output 标准音乐元数据:

{ 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;

更不用说大量的纯 Javascript AJAX 工作了。

没有理由重新发明这个轮子。 但是,如果您想查看代码并出于任何原因重写它,这里有两个库文件:

二进制 ajax 库
id3 解析器

如果你真的想删除 AJAX 中的任何一个,然后从读取你已经拥有的文件开始(不知何故,没有 AJAX),第二个链接有一个 function,巧合的是, readTagsFromData 我建议你从那里开始实现你的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM