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:
und möchte dann mit:
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
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: