читать теги id3 из mp3, используя JavaScript - PullRequest
8 голосов
/ 13 июня 2011

Я знаю, что здесь уже спрашивали, но мои условия немного отличаются. Я делаю приложение Chrome, поэтому у меня есть доступ ко всем последним API-файлам JavaScript, которые он поддерживает, не беспокоясь о совместимости. Более того, я действительно хотел бы сделать это сам ... т.е. без какой-либо библиотеки. Учебник или руководство подойдет. В конце концов, насколько это может быть сложно?

В основном у меня есть mp3, добавленные этим пользователем, и я хочу иметь возможность читать основную информацию, такую ​​как исполнитель и альбом (на самом деле, только эти два, но другие не причинят вреда).

Полагаю, у меня есть идея, что такое тег id3 и как можно прочитать информацию. Я просто должен увидеть это в действии только один раз. Спасибо

Ответы [ 3 ]

12 голосов
/ 02 августа 2011

Больше нет необходимости использовать binaryajax.js или id3 parser lib.В Chrome at вы можете использовать FileReader и DataView для чтения и извлечения информации ID3v1.Это всего лишь несколько строк:

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

7 голосов
/ 28 марта 2013

В этой библиотеке есть хорошие документы. Я люблю 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> } ]
}
3 голосов
/ 13 июня 2011

Как отметил @joekarl, для вас есть библиотеки. Я видел ваш запрос информации, чтобы вы могли сделать это самостоятельно, но вот драгоценный камень из примерно 500+ строк из библиотеки на nihilogic.dk :

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), во второй ссылке есть функция, которая по совпадению называется readTagsFromData. Я предлагаю вам начать с ваших целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...