Ява звук API, кажется, не принимает файл .wav с кодеком - IMA WAV ADPCM - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь рассчитать продолжительность файлов .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? если да, как я могу получить длину кадра и частоту кадров файла?

...