Я хочу узнать, если два аудиофайла одинаковы или один содержит другой.Java сравнить два аудиофайла с отпечатком пальца
Для этого я использую отпечатком musicg
byte[] firstAudio = readAudioFileData("first.mp3");
byte[] secondAudio = readAudioFileData("second.mp3");
FingerprintSimilarityComputer fingerprint =
new FingerprintSimilarityComputer(firstAudio, secondAudio);
FingerprintSimilarity fingerprintSimilarity = fingerprint.getFingerprintsSimilarity();
System.out.println("clip is found at " + fingerprintSimilarity.getScore());
конвертировать аудио в байтовый массив Я использую звук API
public static byte[] readAudioFileData(final String filePath) {
byte[] data = null;
try {
final ByteArrayOutputStream baout = new ByteArrayOutputStream();
final File file = new File(filePath);
final AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
byte[] buffer = new byte[4096];
int c;
while ((c = audioInputStream.read(buffer, 0, buffer.length)) != -1) {
baout.write(buffer, 0, c);
}
audioInputStream.close();
baout.close();
data = baout.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
, но когда я исполню его, я стал на fingerprint.getFingerprintsSimilarity()
Exception
.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15999
at com.musicg.fingerprint.PairManager.getPairPositionList(PairManager.java:133)
at com.musicg.fingerprint.PairManager.getPair_PositionList_Table(PairManager.java:80)
at com.musicg.fingerprint.FingerprintSimilarityComputer.getFingerprintsSimilarity(FingerprintSimilarityComputer.java:71)
at Main.main(Main.java:42)
Как сравнить 2 mp3-файла с отпечатками пальцев на Java?
Сделав программу для сравнения более 1000 mp3 песни, это было бы плохим решением. – anatoli
Пожалуйста, подберите свой комментарий, так оно и есть просто субъективно, но не очень полезно. «Плохое решение» почему? Из-за пространства для хранения? Использование процессора? Время, необходимое для конверсии? Кстати, не очень хороший стиль представляет код для одной пары файлов, не говоря уже о необходимости пакетной обработки вообще. Цитата: «Как я могу сравнить 2 mp3-файлов с отпечатками пальцев в Java?» Я правильно ответил на ваш вопрос. Если вы считаете, что это решение «плохо», возможно, вам нужно выбрать лучшую библиотеку, которая будет делать то, что вы представляете себе за один шаг. У меня нет волшебной палочки для вас. – kriegaex
yay, моя вина. Я просто подумал, что есть более простое решение для сравнения mp3-файлов, так как есть довольно быстрые программы для сравнения по многим файлам. благодаря – anatoli