Как я могу определить длину заголовка MP3-файла?

StackOverflow https://stackoverflow.com/questions/2180521

  •  24-09-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top