Декодирование файлов MP3 с помощью JLayer

Я хочу использовать JLayer для декодирования файла MP3. Я искал и искал документацию и примеры того, как именно это сделать, и не нашел ничего полезного. Все, что я нахожу, встроено в другие примеры или ссылки на JavaSound, что неприемлемо в моем случае.

Я чувствую, что это невероятно легко, но я не могу понять, как это сделать. Я не знаю, для чего нужны параметры

Decoder decoder = new Decoder();
decoder.decodeFrame(Header header, Bitstream stream);

или как их получить.

tl; dr Как мне декодировать файл MP3 только с помощью JLayer? Никаких MP3 SPI, JavaSound, Tritonus — ничего.


person Albatross    schedule 23.08.2012    source источник
comment
Вы хотите расшифровать и что делать? сохранить как файл волны? играть через динамики?   -  person m_vitaly    schedule 24.08.2012
comment
@VitalyPolonetsky Храните образцы в массиве. Я просто хочу получить все образцы из mp3-файла.   -  person Albatross    schedule 24.08.2012
comment
Итак, вы хотите сохранить образцы для будущего использования (я полагаю). Но в каком формате вам нужны образцы?   -  person m_vitaly    schedule 28.08.2012
comment
ПКМ. Jlayer имеет метод decodeFrame, который возвращает буфер сэмплов. Я просто хочу знать, как использовать этот метод для получения заданного количества образцов.   -  person Albatross    schedule 05.09.2012
comment
@Albatross, у тебя есть код для преобразования .mp3 в данные PCM с помощью jLayer?   -  person Udit Kumawat    schedule 16.06.2015


Ответы (1)


Сам разобрался.

Bitstream bitStream = new Bitstream(new FileInputStream("path/to/audio.mp3"));

while(condition){
    Decoder decoder = new Decoder();
    int[] samples = decoder.decodeFrame(bitStream.readFrame(), bitStream); //returns the next 2304 samples
    bitStream.closeFrame();

    //do whatever with your samples
}
person Albatross    schedule 15.09.2012
comment
Что вы хотите. Он контролирует, какая часть mp3 декодируется. Поэтому, если вы хотите декодировать весь файл, вашим условием будет наличие дополнительных сэмплов для декодирования или нет. - person Albatross; 26.09.2012
comment
@Albatross: это действительно интересно. Как вы думаете, это можно использовать для потоковой передачи mp3 через Интернет? А также, как вы играете эти сэмплы спустя какое-то время? - person dynamic; 10.02.2014