FFT на mp3 файле, Java
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
А кто в проектах делал fast fourier transform на mp3 файлах на java?
Мне нужно вытащить частоты из mp3 файла. Для этого мне нужно получить декодированный массив байтов. Я нашел либу jLayer, которая умеет проигрывать mp3, поковырялся в ее исходниках и набросал вот этот код, который должен декодировать mp3 файл:
public static short[] getDecodedMp3Stream(String pathToMp3File) { short[] decodedMp3StreamInBytes = new short[]{}; Bitstream bitStream = new Bitstream(new FileInputStream(pathToMp3File)); Decoder decoder = new Decoder(); Header frameHeader; while ((frameHeader = bitStream.readFrame()) != null) { SampleBuffer output = (SampleBuffer) decoder.decodeFrame(frameHeader, bitStream); //returns the next 2304 samples short[] next = output.getBuffer(); decodedMp3StreamInBytes = appendToArray(decodedMp3StreamInBytes, next); bitStream.closeFrame(); } return decodedMp3StreamInBytes; }
Проблема в том, что массив pcmOut всегда заполнен 0. Как пофиксить данный момент?
Если кто-то посоветует кросс платформенную либу на C/C++ для работы с mp3 (суть — получить декодированный поток байтов из mp3 файла), то буду признателен.
21 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів