Java声音api似乎不接受带有编解码器的.wav文件-IMA WAV ADPCM

时间:2019-04-11 13:55:04

标签: java wav pcm adpcm

我正在尝试使用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文件持续时间的逻辑?如果是,我如何获取文件的帧长和帧率?

0 个答案:

没有答案