@Paladin1032
Студент МФТИ

Как декодировать mp3 в PCM ?

Стоит задача декодировать mp3 в импульсно-кодовую модуляцию.

На просторах сети нашел библиотеку JLayer
Накидал класс:

public class test {

	public static void main(String[] args) throws DecoderException, BitstreamException, IOException{
		
		Bitstream bitStream = new Bitstream(new FileInputStream("Work/sin.mp3"));
		
		boolean done = false;
		SampleBuffer output = null;
		int i = 0;
		int k = 0;
		while(! done){
			Header frameHeader =  bitStream.readFrame();
			
			i++;
			if (frameHeader == null) {
                done = true;
            } 
			else {

				Decoder decoder = new Decoder();
				output =  (SampleBuffer) decoder.decodeFrame(frameHeader, bitStream); //возвращает следующие 2304 сэмпла

//				int freq = output.getSampleFrequency();     //частота дискретизации
//				int channel = output.getChannelCount();    //количество каналов

				short[] next = output.getBuffer();
				
                               System.out.println(next);				
			}
			bitStream.closeFrame();    
		}
	}
	
}


Для каждого фрейма возвращается значение вида "[S@2ff4acd0"
Подскажите пожалуйста, как его разобрать в импульсно-кодовую модуляцию?

Или может Вы знаете другую библиотеку с таким функционалом и знаете как с ее помощью реализовать декодирование?
Заранее спасибо!
  • Вопрос задан
  • 3015 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Подскажите пожалуйста, как его разобрать в импульсно-кодовую модуляцию?

насколько я понял это она и есть, попробуйте так:
System.out.println(Short.valueOf(next));
Ответ написан
Комментировать
@Paladin1032 Автор вопроса
Студент МФТИ
Fesor, большое спасибо!
Но вот если теперь взять из аудио файла несколько фреймов и отделить один канал , можно увидеть такую картинку7f8cc3ca670a499a90633e1a21a05c7a.jpeg
Отчетливо видно 3 фрейма, при чем каждый из них в начале принимает значение 0 в течении некоторого времени.
У меня возникают сомнения, действительно ли аудиоданные так записаны в mp3, или это недостаток декодирования?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы