Я пытаюсь рассчитать продолжительность файлов .wav, используя java sound api. Java sound api поддерживает файлы .wav с кодеком PCM S16LE, но не поддерживает файл .wav с кодеком IMA WAV ADPCM. Есть ли какая-либо библиотека, которая может помочь мне получить продолжительность всех видов файлов .wav с любым кодеком или есть какой-либо способ, которым я могу вычислить продолжительность файлов .wav без использования какой-либо библиотеки?
Пока я так много пробовал:
private Long getDuration(File file)
{
AudioFileFormat fileFormat = null;
long duration = 0;
try
{
fileFormat = AudioSystem.getAudioFileFormat(file);
if(fileFormat.getType().toString().equalsIgnoreCase(StringConstants.MP3)) {
Map<?, ?> properties = fileFormat.properties();
Long microseconds = (Long) properties.get(StringConstants.DURATION);
//converting to milliseconds
duration = microseconds / 1000;
}
else if(fileFormat.getType().toString().equalsIgnoreCase(StringConstants.AUDIO_WAVE)) {
long frames = fileFormat.getFrameLength();
double durationInSeconds = (frames + 0.0) / fileFormat.getFormat().getFrameRate();
duration = Math.round(durationInSeconds * 1000);
}
}
catch (UnsupportedAudioFileException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return duration;
}
Можно ли как-нибудь использовать ту же логику, что и здесь, для вычисления продолжительности WAV-файлов IMA WAV ADPCM AUDIO? если да, как я могу получить длину кадра и частоту кадров файла?