Audio MD5

Список разделов foobar2000 Есть вопрос!

Описание: У вас проблемы с foobar2000 и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть. Подробно описывайте проблему. Не забывайте указать версию плеера, название сборки, по возможности добавить скриншоты проблемы.

Сообщение #1 K1RZA » 18.08.2021, 17:06

https://foobar.hyv.fi/?view=foo_audiomd5

Не могу понять, как завести эту вещь.
Хочу прямо из фубара через контекстное меню создавать проверочные файлы *.md5
K1RZA M
Автор темы
Аватара
Откуда: Россия, Санкт-Петербруг
Репутация: 0
С нами: 10 лет 2 месяца

Сообщение #2 Azaza » 18.08.2021, 18:14

Этот компонент НЕ может создавать файлы *.md5. Он может только вычислять md5 аудиоданых (именно аудиоданных, а не файла) и записывать в теги. И для его работы нужен ffmpeg.exe

По факту, md5, которую выдаёт компонент, во всяком случае для FLAC'a, не соответствует действительности (md5, которая расчитана самим FLAC'ом). На досуге свяжусь с разработчиком по этому поводу.
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #3 K1RZA » 18.08.2021, 19:17

А вообще есть какой компонент, чтобы создавать md5?
K1RZA M
Автор темы
Аватара
Откуда: Россия, Санкт-Петербруг
Репутация: 0
С нами: 10 лет 2 месяца

Сообщение #4 Azaza » 18.08.2021, 19:25

K1RZA:А вообще есть какой компонент, чтобы создавать md5?
Нет такого компонента, который создаёт файлы *.md5. Вообще, использование *.md5, содержащих хеши именно файлов целиком ( именно такие создаёт Trader's Little Helper) не очень удобно для аудио. При редактировании тегов хеш файла изменяется и нужно менять хеш, записанный в *.md5

Azaza:По факту, md5, которую выдаёт компонент, во всяком случае для FLAC'a, не соответствует действительности (md5, которая расчитана самим FLAC'ом). На досуге свяжусь с разработчиком по этому поводу.
Ответ от разработчика:
The checksum is calculated from undecoded audio data, both for speed reasons and to support lossy codecs. Lossy decoding can easily have bit-differences depending on platform and optimizations and these would ruin any checksum matching.
The component calls ffmpeg with the following parameters: ffmpeg -v 0 -INPUT -map 0:a -c copy -f md5 -


Т.е. вычисляется md5 недекодированного аудиопотока. Поэтому и несоответствие с md5, вычисленной FLAC'ом, т.к. FLAC вычисляет md5 декодированного аудио.
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #5 K1RZA » 19.08.2021, 12:14

Есть замечательный компонент, File Integrity Verifier.
Он как раз делает то, что мне нужно. Не только проверяет целость файлов, но и высчитывает хэш суммы.
Но ему не хватает такой удобной вещи, как создание проверочных файлов. Странно, что автор такой функционал не добавил.
Можно конечно экспортировать полученные данные в текстовый файл, но смысл.
Изображение
K1RZA M
Автор темы
Аватара
Откуда: Россия, Санкт-Петербруг
Репутация: 0
С нами: 10 лет 2 месяца

Сообщение #6 viviancels » 22.08.2022, 23:33

Сегодня задался вопросом, как узнать, что файл скачался битым или не докачался? Помимо отсутствия тегов и обложки в тегах? в метаданных flac прописывается контрольная сумма аудиопотока, но это просто запись, настоящая контрольная сумма может быть другой, если файл битый, вот если бы пересчитать все заново и сравнить с этой записью, но для этого нужно конвертировать его во flac заново, тогда при конвертировании контрольная сумма будет новой. Потом только визуально сравнивать старый и новый списки. Например, есть flac, у него запись контрольной суммы MD5, если файл битый и переконвертировать его в flac заново, то эта запись с контрольной суммой MD5 поменяется. Это дурацкий способ проверки. Нашел утилиту flacfrontend, которая вроде проверяет, но до конца не разобрался с ней. Больше интересует foobar2000 и его плагины.

По поводу обсуждаемого плагина. У меня почемуто выдает ошибку. CreateProcess failed (0x00000002)

File Integrity Verifier (foo_verifier) проверяет читаемость (декодирование) файла. Но бывает, что файл декодируется/читается, но битый, не до конца. У меня был такой файл, к сожалению, я переписал его новым с новой контрольной суммой MD5, хотелось на нем проверить как работают плагины.
Последний раз редактировалось viviancels 23.08.2022, 01:04, всего редактировалось 2 раз(а).
viviancels
Репутация: 0
С нами: 2 года 3 месяца

Сообщение #7 VEG » 23.08.2022, 00:49

viviancels:По поводу обсуждаемого плагина. У меня почемуто выдает ошибку. CreateProcess failed (0x00000002)
По-видимому, не может найти ffmpeg.exe, который этот плагин использует.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 279
С нами: 12 лет 7 месяцев

Сообщение #8 viviancels » 23.08.2022, 01:06

VEG:По-видимому, не может найти ffmpeg.exe, который этот плагин использует.
Я тоже подумал так и положил ffmpeg.exe в папку components и в папку windows/system32, после перезагрузки системы заработал.

Наконец, разобрался. Плагин Create Audio MD5 Checksum подсчитывает и показывает реальную, актуальную контрольную сумму аудиопотока. Если она не совпадает с номинальной, той, которая записана в паспорте файла, в метаданных (fingerprint), значит, файл битый.
Плагин Verify Integrity видимо тоже создает реальную контрольную сумму и сравнивает ее с номинальной, которая записана в метаданных, при несовпадении выдает ошибку.

Программы Trader's little helper и FLAC Frontend делают то же самое, что и Verify Integrity, проверяют FLAC на целостность. Я просто открыл FLAC в HEX
редакторе, удалил там пару ячеек и тем самым поменял аудиопоток на пару байтов. При этом запись MD5 осталась прежней, а фактически MD5 аудиопотока поменялся.
viviancels
Репутация: 0
С нами: 2 года 3 месяца

Сообщение #9 Azaza » 23.08.2022, 03:53

viviancels:Наконец, разобрался. Плагин Create Audio MD5 Checksum подсчитывает и показывает реальную, актуальную контрольную сумму аудиопотока. Если она не совпадает с номинальной, той, которая записана в паспорте файла, в метаданных (fingerprint), значит, файл битый.
Плагин Verify Integrity видимо тоже создает реальную контрольную сумму и сравнивает ее с номинальной, которая записана в метаданных, при несовпадении выдает ошибку.
Обратите внимание, что по умолчанию foo_audiomd5 вычисляет md5 для недекодированных данных (для lossless можно включить вычисление md5 для декодированных в PCM данных). File Integrity Verifier для lossless вычисляет md5 декодированных в PCM данных. Все lossless кодеки, которые могут записывать md5 в метаданные, кроме Monkey's audio (алгоритм вычисления md5 которого известен только его автору), записывают в файл именно md5 декодированных в PCM данных.

viviancels:Я просто открыл FLAC в HEX редакторе, удалил там пару ячеек и тем самым поменял аудиопоток на пару байтов. При этом запись MD5 осталась прежней, а фактически MD5 аудиопотока поменялся.
Такие повреждения в файле будут обнаружены при проверке с помощью File Integrity Verifier или flac.exe, даже если в файле не записана md5.

viviancels:бывает, что файл декодируется/читается, но битый, не до конца.
Такие файлы File Integrity Verifier тоже определяет, кстати, даже при отсутствии в них md5. Пример файла - https://www.dropbox.com/s/n9awti95o8kt88v/TRUNCATED @ 3m 31s.flac?dl=1
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #10 viviancels » 23.08.2022, 07:09

Azaza:Обратите внимание, что по умолчанию foo_audiomd5 вычисляет md5 для недекодированных данных (для lossless можно включить вычисление md5 для декодированных в PCM данных).

Нашел в настройках foobar2000 в самой нижней вкладке advanced эту настройку:
Спойлер
Изображение

Если выделить до 100 файлов в плейлисте, у foo_verifier в контекстном меню utilities есть пункт verify integrity (пункт AccurateRip неактивный). Если выделить более 100 треков, например, 101, то появляется второй пункт меню verify integrity with Audio MD5, но при нажатии на него в окне результатов в колонке Status выдает AufioMD5 cheksum missing для всех треков.
Спойлер
Изображение
viviancels
Репутация: 0
С нами: 2 года 3 месяца

Сообщение #11 Azaza » 23.08.2022, 18:50

viviancels:Если выделить до 100 файлов в плейлисте, у foo_verifier в контекстном меню utilities есть пункт verify integrity (пункт AccurateRip неактивный). Если выделить более 100 треков, например, 101, то появляется второй пункт меню verify integrity with Audio MD5, но при нажатии на него в окне результатов в колонке Status выдает AufioMD5 cheksum missing для всех треков.
Пункт меню "Verify integrity with Audio MD5" принадлежит foo_audiomd5, а не foo_verifier. Если md5 не была предварительно записана в соответствующий тег (по умолчанию - audiomd5), то и появляется сообщение "AufioMD5 cheksum missing". foo_audiomd5 НЕ обращает внимания на ту md5, которая записывается в файлы самими кодерами при кодировании и отображается на вкладке "Details" и с которой сверяется foo_verifier. Кстати, если хотя бы в одном из выделенных файлов есть заполненный тег, используемый foo_audiomd5, то пункт "Verify integrity with Audio MD5" появится при выделении и меньше 100 треков.
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #12 viviancels » 23.08.2022, 22:24

Azaza, понятно, получается, чтобы в дальнейшем сверять MD5 с помощью foo_audiomd5, сначала нужно запустить Create audio MD5 checksum и нажать update tags, чтобы md5 записалась в тег, который использует для сверки foo_audiomd5.
viviancels
Репутация: 0
С нами: 2 года 3 месяца

Сообщение #13 faraway » 08.03.2023, 19:20

Azaza:кроме Monkey's audio (алгоритм вычисления md5 которого известен только его автору)
Спасибо большое за инфо, кто бы мог подумать, но вот как тогда File Integrity Verifier подтверждает корректность MD5? Плюс попались файлы во FLAC, у которых в Details нет тега MD5, тоже непонятно, как он может подтвердить, если тег затёрт? :spy:

А вообще foobar2000 показывает все теги в Properties или есть скрытые, что в Metadata что в Details?
faraway
Репутация: 0
С нами: 1 год 9 месяцев

Сообщение #14 Azaza » 08.03.2023, 19:55

faraway:но вот как тогда File Integrity Verifier подтверждает корректность MD5? Плюс попались файлы во FLAC, у которых в Details нет тега MD5, тоже непонятно, как он может подтвердить, если тег затёрт?
Для Monkey's audio - никак. Для FLAС без md5 тоже никак. В этих случаях Integrity Verifier просто вычисляет md5, ни с чем её не сравнивая. Но определить, что файл повреждён, можно и без сравнения md5.
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #15 faraway » 08.03.2023, 20:03

Azaza:Для Monkey's audio - никак. Для FLAС без md5 тоже никак.
Прикол в том, что foo_verifier проверяет и подтверждает корректность (No problems found). :think:

Azaza:Но определить, что файл повреждён, можно и без сравнения md5.
А каким образом?
faraway
Репутация: 0
С нами: 1 год 9 месяцев

Сообщение #16 Azaza » 08.03.2023, 20:06

faraway:Прикол в том, что foo_verifier проверяет и подтверждает корректность (No problems found).
Подтверждает, что файл декодируется без проблем, а не корректность несуществующей md5.

faraway:А каким образом?
Например, у FLAC'а каждый фрейм имеет CRC - https://xiph.org/flac/format.html#frame_header
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #17 faraway » 09.03.2023, 16:42

Azaza:Подтверждает, что файл декодируется без проблем, а не корректность несуществующей md5.
Т.е. этот плугин не сличает хэши с тегом, а только показывает? :smile:

Azaza:Например, у FLAC'а каждый фрейм имеет CRC
Разве не эффективнее иметь CRC на весь аудио-поток? Или каждый фрейм верифицируется по мере воспроизведения?
faraway
Репутация: 0
С нами: 1 год 9 месяцев

Сообщение #18 Azaza » 09.03.2023, 21:24

faraway:Т.е. этот плугин не сличает хэши с тегом, а только показывает?
Если есть с чем сличать, то сличает, а, если не с чем сличать, то только показывает ту, которую вычислил. Да пребудет с Вами Капитан Очевидность.

faraway:Или каждый фрейм верифицируется по мере воспроизведения?
Насчёт воспроизведения не знаю, а при верификации всего файла, да, каждый фрейм верифицируется, причём всегда, неважно есть ли в файле md5 для всего потока, или нет.

Если есть сильное желание вникнуть в тонкости, то можете поспрошать на hydrogenaud.io. Там часто бывают основной из нынешних разработчиков FLAC'а и разработчик WavPack'a.
Azaza M
Аватара
Репутация: 417
С нами: 8 лет 3 месяца

Сообщение #19 faraway » 11.03.2023, 10:29

Azaza:Да пребудет с Вами Капитан Очевидность.
Ну это как-то немножко неочевидно, тем более, когда не знаешь о наличии CRC во фреймах и других возможностях верификации, спасибо за ликбез. :smile: Значит второй плугин foo_audiomd5 более прямолинеен.
faraway
Репутация: 0
С нами: 1 год 9 месяцев

Сообщение #20 viviancels » 29.06.2023, 15:28

Здравствуйте еще раз. Существует ли плагин для создания точного отпечатка звука для mp3? Наподобие foo_audiomd5, который может создавать свой отпечаток для flac/ Я знаю несколько программ типа similarity, но они неудобны. И у них бывают ошибки, например, два одинаковых файла не видят, что они одинаковые. В том же similarity или в другой программе надо выставить точность совпадения 99% чтобы определила, что файлы одинаковые. Хочется просканировать все mp3 и чтобы у них был отпечаток в тегах.
viviancels
Репутация: 0
С нами: 2 года 3 месяца

След.

Вернуться в Есть вопрос!