Получите метаданные MP3 ID3 и продолжительность песни, используя AudioStreamer - PullRequest
2 голосов
/ 11 октября 2009

Я использую AudioStreamer Мэтта Галлахера для воспроизведения MP3 через HTTP. Мне нужно знать продолжительность песни и теги ID3.

Возможно ли реализовать это в AudioStreamer и как?

Ответы [ 2 ]

2 голосов
/ 11 октября 2009

Из его Документов :

Ограниченная сфера применения

Одна точка должна быть уточнил, прежде чем продолжить: это Класс предназначен для потокового аудио. Под потоковым я не просто подразумеваю аудио файл передается по HTTP ". Вместо этого я имею в виду непрерывный HTTP источник без конца, который продолжается на неопределенный срок (как радиостанция, ни одной песни).

Это, кажется, подразумевает, что получить длительность может быть сложно.

Вот как получить теги ID3v2:

Получить метаданные

Самый простой источник метаданные поступают из заголовков HTTP. Внутри handleReadFromStream: типСобытии: метод, используйте CFReadStreamCopyProperty скопировать kCFStreamPropertyHTTPResponseHeader свойство из CFReadStreamRef, тогда вы можете использовать CFHTTPMessageCopyAllHeaderFields to скопировать поля заголовка из ответ. Для многих потокового аудио серверы, имя потока является одним из эти поля.

значительно сложнее источник метаданные - это теги ID3. ID3v1 является всегда в конце файла (так бесполезно при потоковой передаче). ID3v2 это расположен в начале, так что может быть больше доступный.

Я никогда не читал теги ID3, но я подозреваю, что если вы кешируете первый несколько сотен килобайт файла где-то, как он загружается, откройте этот кеш с AudioFileOpenWithCallbacks и затем прочитайте kAudioFilePropertyID3Tag с AudioFileGetProperty вы можете быть возможность прочитать данные ID3 (если это существует). Как я уже сказал: я на самом деле никогда не делал этого, поэтому я не точно знаю, что это сработает.

1 голос
/ 07 апреля 2011

MP3-потоки делятся на «кадры», которые представляют собой отдельные единицы данных. Некоторые потоки добавляют блок метаданных ID3 каждые несколько кадров, которые вы теоретически можете сканировать и читать.

Смотрите здесь для получения дополнительной информации: http://jicyshout.sourceforge.net/oreilly-article/java-streaming-mp3-pt2/java-streaming-mp3-pt2.html

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