mp3-Lied Dauer berechnen

Corn

Mitglied
Hallo,

ich möchte die Dauer eines MP3-Liedes erkennen/berechnen.

Ich arbeite mit javazoom und dem mp3Plugin von Sun. Das Problem ist, wenn ich versuche mir über das AudioFileFormat oder AudioFormat die Eigenschaften zu holen haben alle Eigenschaften null obwohl ich in meinem Dateisystem die Dauer, Author, usw. sehen kann.

Generell bekomme ich über das AudioFileFormat oder AudioFormat kaum Informationen (z.B. MPEG1L3 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, 38.28125 frames/second).

Jedenfalls konvertiere ich dieses Format dann wie folgt in PCM:

Java:
	AudioFormat baseFormat = audioInputStream.getFormat(); // Format der MP3-Datei
			AudioFormat decodedFormat = new AudioFormat(
					AudioFormat.Encoding.PCM_SIGNED, // Encoding to use
					baseFormat.getSampleRate(), // sample rate (same as base
												// format)
					16, // sample size in bits 
					baseFormat.getChannels(), // # of Channels
					baseFormat.getChannels() * 2, // Frame Size
					baseFormat.getSampleRate(), // Frame Rate
					false // Big Endian
			);

			AudioInputStream decodedInput = AudioSystem.getAudioInputStream(
					decodedFormat, audioInputStream);

			double frameLength = 0;
			try {
			
				frameLength = (decodedInput.available() / decodedFormat
						.getFrameSize()); //Anzahl der Frames
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

und möchte dann mit:

Java:
double durationInSeconds = ((double)frameLength/(double)audioInputStream.getFormat().getFrameRate());

die Dauer in Sekunden berechnen.

Jedoch bekomme ich bereits für die frameLength einen völlig falschen Wert (habe die frameLength mit anderen Programmen gecheckt).

Hat evtl. jemand eine Idee oder weiß sogar wie das richtig zu berechnen wäre?

Mfg
Corn
 
Zuletzt bearbeitet:
Hat sich erledigt. Kann mir aber jemand erklären warum

Java:
System.out.println(mp3Reader.getAudioFileFormat(f).getProperty("duration"));

Bei duration "null" ausgibt.

Und ich in

Java:
	System.out.println( mp3Reader.getAudioFileFormat(f).properties().toString());

ein duration-Feld finde mit der angegebenen Dauer?

Danke 🙂

EDIT: oh... long lässt sich ja nicht implizit in String konvertieren... hat sich erledigt, sorry 4 spam
 
Zuletzt bearbeitet:

Zurück
Oben