# MP3 Lied länge auslesen  mit JMF



## Pommes9485 (18. Aug 2011)

Guten Tag,

Wenn ich mit :

```
playMP3.start();
 try{
 sleep(1000);}catch(InterruptedException io){io.getMessage();}
 Time time = playMP3.getDuration();
long lDuration = Math.round(time.getMinutes());
System.out.println("Dauer: " + lDuration);
```

Die Zeit hole, stimmt die Zeit nicht, bzw kann ich keine Muster erkenne 

Bei WIndows sind die Lieder 3:28 Minuten lang (also 208 Sekunden) in der Konsole steht aber 304 Sekunden. Bei 3:38 steht  335 Sekunden. Was ist da los ? Ich warte extra noch eine Sekunde, damit das ich keine 9 Milliarden als Ergebniss bekomme.

Danke Schonmal


----------



## Ralph-Uwe (18. Aug 2011)

Hi,

JMF ist veraltet und wird nicht mehr gepflegt. Daher habe ich mich damit nicht weiter geschäftigt.

Um die Laufzeit eines mp3 Lied zu ermitteln, benötigst Du Dateilänge und die Samplesize in Bits.


```
duration = song.length()/audioFormat.getSampleSizeInBits()/1000; // für mp3
```

songLaenge  - entspricht der Dateigröße
sampleSizeInBits - kann über das Audioformat des AudioInputStreams abgefragt werden.

Für die Berechnung einer wav Datei brauchst Du ebenfalls Infos aus dem AudioInputStream und dem AudioFormat.

```
duration = in.getFrameLength()/(long)audioFormat.getFrameRate(); // für wav
```

Ich habe 3 Dateien hochgeladen, mit den Du mp3 und wav Dateien
abspielen kannst.
Die Gesamtlaufzeit und die aktuelle Position kann abgefragt werden.
Probiere es mal aus!

Gruß


----------



## Kr0e (18. Aug 2011)

Oder du benutzt professinelle Komplettlösungen wie Gstreamer-Java oder VLCj ...


----------



## Pommes9485 (18. Aug 2011)

mhm, ich habs ja geahnt 
Was ist denn aktuell und flexibler als JLayer ?


----------

