Как я могу определить длину заголовка MP3-файла?
Вопрос
Я пишу программу, чтобы развлечь и копировать все файлы или сегменты на основе изменений на любом конце (rsync-esque ... но больше похоже на унисон). Основная идея состоит в том, чтобы сохранить мою музыкальную папку (все MP3) в современном виде в нескольких местах.
Я хотел бы отправить сегментированные обновления, если бы изменились только небольшие порции файла, а не копирование всего файла. Для этого мне нужен способ отключить сегменты файла.
Я изначально попробовал генерировать хеси для блоков каждого файла (каждый N байт, который я бы хэш-сегмент). Я заметил, что когда я изменил один атрибут (тег ID3V2 в MP3), все хэшированные блоки будут изменяться. Это имеет смысл, так как я догадаю, что заголовок растет, так как он приобрел новую информацию.
Это приводит меня к своему фактическому вопросу. Я хотел бы узнать, как определить длину заголовка MP3, поэтому я мог создать 2 сопоставимых хэшей.
1) Мета информация файла (заголовок)
2) фактический поток MPEG со звуком (это хеш должно оставаться неизменным, если все, что я делаю, это изменять информацию тега)
Я пропущу что-нибудь еще?
Спасибо!
Выступ
Решение 3
Я завел с помощью TAGLIBSHARP. developer.novell.com/wiki/index.php/taglib_sharp.
Другие советы
Если вы хотите определить информацию заголовка, вы либо:
- а) нужно использовать библиотеку MP3, которая может выполнять анализ для вас, или
- б) перейти к Спецификация MP3. и анализировать его по мере необходимости.
Если все, что вы хотите проверить длину тегов ID3V2, вы можете узнать информацию о своей структуре в http://www.id3.org/id3v2.4.0-structure..
Если вы прочитаете первые 3 байта, и они равны «ID3», а затем пропустите 7-й байт, затем прочитайте размер заголовка. Будьте осторожны, потому что размер хранится как «синхненовое целое число».