как я могу создать контрольную сумму только данных медиа без метаданных для получения стабильной идентификации для медиа-файла. предпочтительно кросс-платформенный подход с библиотекой, которая имеет поддержку многих форматов. например, vlc, ffmpeg или mplayer.
(медиа-файлы должны быть аудио и видео в распространенных форматах, изображения были бы хороши иметь также),
Я не знаю ни одного существующего платформенно-независимого программного обеспечения, которое могло бы это сделать, но я знаю способ, которым это могло бы быть выполнено в интерпретируемом ( платформенно-независимый) язык, такой как Java.
По сути, нам просто нужно удалить все метаданные (теги) из файла, предварительно демультиплексируя видеофайлы. Теоретически после демультиплексирования и удаления метаданных можно было бы хешировать файл и сравнивать его с другим файлом, который прошел тот же процесс, чтобы сопоставить идентичные файлы, несмотря на наличие разных тегов. В отличие от отпечатка пальца, это не идентифицирует похожие песни / фильмы, а идентичные файлы (представьте, что вам могут понадобиться 10 разных версий или битрейтов данной песни, которую вы заархивировали, но не хотите, чтобы две одинаковые копии любой из них плавали вокруг) .
Самая неприятная часть этого - удаление тегов, поскольку существует множество различных спецификаций для форматов тегов, которые не обязательно реализуются одинаково в разных приложениях, то есть один и тот же точный аудиофайл, заданный одинаковыми тегами отдельно через два разных приложения, может не привести к идентичные выходные файлы. Единственный способ, которым это может создать проблему, фатальную для концепции контрольной суммы только для аудио, - это если популярное программное обеспечение для тегов вносит какие-либо изменения в двоичную аудио часть файла или дополняет аудио нестандартным способом.
Взятие контрольной суммы тривиально, но я не в курсе, чтобы какие-либо независимые от платформы библиотеки для демультиплексирования и детагирования файлов mpeg.Я знаю, что в средах nix mpgtx - отличный инструмент командной строки, который может выполнять демультиплексирование и удаление тегов, но, очевидно, это не платформенно-независимое решение.
Может быть, кто-то там чувствует себя амбициозным?
Одно из возможных решений, которое я нашел, похоже, связано с vlc:
./VLC -I rc snd.mp3 :sout='#std{mux=raw,access=file,dst=-}' vlc://quit | sha1sum