Java получение сырых данных из mp3

119
04 декабря 2019, 15:50

У меня есть короткий mp3 файл из которого мне нужно получить сырую аудио-дорожку в виде массива для последующего преобразования Фурье.
Я пытался использовать Jlayer для преобразования mp3 к wav, чтобы затем уже wav расшифровать в массив
Для этого я использую вот такой код:

public class Main {
    public static void main(String[] args) {
        try{
            String sourceFile = "nts.mp3";
            String targetFile = "out/nts.wav";
            AudioInputStream mp3Stream = AudioSystem.getAudioInputStream(new File(sourceFile));
            AudioFormat sourceFormat = mp3Stream.getFormat();
            AudioFormat convertFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                    sourceFormat.getSampleRate(), 16,
                    sourceFormat.getChannels(),
                    sourceFormat.getChannels() * 2,
                    sourceFormat.getSampleRate(),
                    false);
            AudioInputStream converted = AudioSystem.getAudioInputStream(convertFormat, mp3Stream);
            AudioSystem.write(converted, AudioFileFormat.Type.WAVE, new File(targetFile));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

Однако в converted я получаю поток полностью забитый нулями
К проекту подключены tritonus_share-0.3.6.jar, mp3spi1.9.5.jar, jl1.0.1.jar
В чем может быть ошибка?

READ ALSO
Тест функции в JUnit

Тест функции в JUnit

А именно как протестировать: String tasteToString() ?

98
Как использовать Scanner для char?

Как использовать Scanner для char?

В классе Scanner есть для int метод nextInt(), для double метод nextDouble(), для String метод nextLine(), а какой есть для char?

124
Вывод анимированной gif в Java

Вывод анимированной gif в Java

подскажите что я делаю не такЕсть такой код:

104
Переписать цикл с помощью Stream Api

Переписать цикл с помощью Stream Api

Можно ли переписать этот код с помощью Stream Api, как это будет выглядеть?

107