Ответы, приведенные в Как узнать общее время звукового файла в Java? хорошо работают для файлов WAV, но не для файлов MP3.
Они есть (данные в файле):
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long frames = audioInputStream.getFrameLength();
double durationInSeconds = (frames+0.0) / format.getFrameRate();
и
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long audioFileLength = file.length();
int frameSize = format.getFrameSize();
float frameRate = format.getFrameRate();
float durationInSeconds = (audioFileLength / (frameSize * frameRate));
Они дают одинаковый правильный результат для файлов WAV, но неправильные и разные результаты для файлов MP3.
Есть идеи, что мне нужно сделать, чтобы получить длительность mp3-файла?