Comment puis-je obtenir le temps total d'un fichier mp3 en Java?

Les réponses fournies dans Comment puis-je obtenir un fichier audio temps total en Java? fonctionnent bien pour des fichiers wav, mais pas pour les fichiers mp3.

Ils sont (fichier):

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat format = audioInputStream.getFormat();
long frames = audioInputStream.getFrameLength();
double durationInSeconds = (frames+0.0) / format.getFrameRate();  

et:

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));

Ils donnent le même résultat correct pour les fichiers wav, mais tort et à des résultats différents pour les fichiers mp3.

Une idée de ce que dois-je faire pour obtenir le fichier mp3 d'une durée de?

source d'informationauteur Tom Brito