我正在尝试使用java sound api计算.wav文件的持续时间。 Java声音api使用PCM S16LE编解码器支持.wav文件,但IMA WAV ADPCM编解码器似乎不支持.wav文件。是否有任何库可以帮助我使用任何一种编解码器获取各种.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;
}
有什么办法可以使用这里我用来计算IMA WAV ADPCM AUDIO的.wav文件持续时间的逻辑?如果是,我如何获取文件的帧长和帧率?