2010-03-07 2 views
6

Как создать контрольную сумму только для мультимедийных данных без метаданных, чтобы получить стабильную идентификацию для медиафайла. предпочтительно кросс-платформенный подход с библиотекой, которая поддерживает многие форматы. например vlc, ffmpeg или mplayer.Как создать стабильную контрольную сумму медиафайла?

(медиа-файлы должны быть аудио и видео в распространенных форматах, изображения были бы неплохо иметь тоже)

+2

Я думаю, что вы ищете какой-то алгоритм отпечатка пальца ... Что было бы интересно, поскольку его можно было бы использовать для идентификации подобных медиа. Ждем ответов, натыкаясь. +1 – hurikhan77

+0

Интересно также отпечатки пальцев, например, libofa [1] для звука (который я не мог скомпилировать на osx, несмотря на патчи), но мне нужно нечто более общее для идентификации повторяющихся файлов, а не для дублирования песен/фильмов. [1] http://code.google.com/p/musicip-libofa/ – yawniek

+0

«Без тегов» вы имеете в виду «без метаданных»? если это так, то «медиа-данные» могут путать вещи. – cregox

ответ

3

Я не знайте о любом существующем независимом от платформы программном обеспечении, которое это выполнит, но я знаю способ, которым это может быть выполнено на интерпретируемом (независимом от платформы) языке, таком как Java.

По существу, нам просто нужно удалить любые метаданные (теги) из файла, демультиплексировать видеофайлы заранее. Теоретически после demux и удаления метаданных можно было бы хэшировать файл и сравнивать с другим файлом, который прошел тот же процесс, чтобы совпадать с идентичными файлами, несмотря на разные теги. В отличие от отпечатка пальца, это не будет идентифицировать похожие песни/фильмы, но идентичные файлы (представьте, что вам может понадобиться 10 различных версий или биттрейт данной песни, которую вы заархивировали, но не хотите, чтобы две одинаковые копии любого из них плавали) ,

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

Взятие контрольной суммы тривиально, но я не осведомлен о верхней части головы любой независимой от платформы библиотеки для файлов demux и detag mpeg. Я знаю, что в средах nix mpgtx - отличный инструмент командной строки, который может выполнять demux и detag, но, очевидно, это не является независимым от платформы решением.

Возможно, кто-то там чувствует себя амбициозным?

+0

вот этот путь. тем временем я написал ha patch для ffmpeg для вычисления хэшей sha1 вместо контрольной суммы adler32. это по сути делает трюк. , если кто-то хотел бы помочь мне принести это в ffmpeg, это было бы здорово. – yawniek

0

один из возможных решений я нашел, кажется, с VLC:

./VLC -I rc snd.mp3 :sout='#std{mux=raw,access=file,dst=-}' vlc://quit | sha1sum 
+0

, похоже, не работает для фильмов, похоже, не является независимым от платформы – yawniek

 Смежные вопросы

  • Нет связанных вопросов^_^