簡體   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