PDA

Показать полную графическую версию : Однозначная идентификация mp3-файла


softsafer
28-06-2004, 04:50
Задача: Есть куча mp3-файлов, с тегами и без них. Если композиций одного исполнителя много - я их складываю в отдельную папку, если же 1-2 штуки, то кладу их в общую папку "СБОРНИК". Когда количество композиций одного исполнителя увеличивается, я создаю папку и переношу их туда. Проблема в том что у меня есть плей-листы (например в формате winamp), в которые я накидываю любимые песенки, а после очередной реорганизации файлов плей-листы ломаются.

Идея: создать базу mp3-файлов, где кодом каждой композиции будет идентификатор построенный на основе ряда параметров mp3-файла, например контрольной суммы:

id filename

54987546 c:\music\сборник\Nirvana - The Men Who Sold The World.mp3
12348246 c:\music\Валерия\трек1.mp3
...

При перемещении файла в другую папку, ссылка в базе становится битой. Но мы всегда сможем найти файл по идентификатору. Можно написать процедуру восстановления ссылок, которая будет перебирать базу, проверять целостность ссылки и если ссылка битая, искать файл и восстанавливать ссылку.

Так какие параметры mp3-файла можно использовать?

Например BITRATE * LENGTH ???

Surround
28-06-2004, 06:58
softsafer
наиболее уникальным, на мой взгляд, является размер файла в байтах :biglaugh:

Guest
28-06-2004, 08:36
Surround
Если есть 10000 файлов и размер их колеблется от 3 до 7 Мб, вероятность совпадения 0,025%. Довольно велика. Если файлов будет 100000 штук, то вероятность возрастает до 0.25%. Было бы неплохо этот размер помножить ещё на какой-нить параметр.

bgg0408
29-06-2004, 00:20
softsafer
можно считать CRC или MD5. на быстрых компах считаются вполне быстро.
Главное эти методы обеспечивают уникальность хэша или контрольной суммы.

bilytur
29-06-2004, 03:21
Если менялись тэги, (а это вполне даже реально), то ни один из названных способов не пройдет.

softsafer
01-07-2004, 03:57
bilytur
Тогда надо взять параметры, которые не зависят от тегов:
- длина трека в секундах
- bitrate

Или же убрать теги и посчитать CRC

bgg0408
01-07-2004, 06:59
Или же убрать теги и посчитать CRC
Разумно и реализуется легко, если есть описалово на теги (ID3v1, ID3v2).

bilytur
02-07-2004, 03:16
Ну вот теперь все правильно. Не возражаю. :)




© OSzone.net 2001-2012