Как считать информацию из mp3 файла на java?

Пользователь

от adrien.waters , в категории: Java , 7 месяцев назад

Как считать информацию из mp3 файла на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от leila.dickinson , 6 месяцев назад

@adrien.waters 

Для считывания информации из MP3 файла на Java можно использовать библиотеку JLayer.


Сначала необходимо включить эту библиотеку в ваш проект. Это можно сделать, добавив зависимость в файле pom.xml (если вы используете Maven) или скачав JAR-файл и добавив его в свой проект.


После того, как вы добавили JLayer в свой проект, вы можете считывать информацию из MP3 файла следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import javazoom.jl.decoder.Bitstream;
import javazoom.jl.decoder.Header;
import javazoom.jl.decoder.SampleBuffer;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MP3Reader {
    public static void main(String[] args) {
        String filePath = "path/to/your/file.mp3";
        
        try (FileInputStream fis = new FileInputStream(filePath)) {
            Bitstream bitstream = new Bitstream(fis);
            Header frameHeader;
            
            while ((frameHeader = bitstream.readFrame()) != null) {
                SampleBuffer sampleBuffer = (SampleBuffer) bitstream.readFrame();
                // Здесь вы можете получить информацию о семпле
                // sampleBuffer.getChannels() - количество каналов (обычно 1 - моно, 2 - стерео)
                // sampleBuffer.getSampleFrequency() - частота дискретизации (обычно 44100 Гц, 48000 Гц и т. д.)
                // sampleBuffer.getBufferLength() - длина буфера данных
                // sampleBuffer.getBuffer() - сам буфер данных
                
                bitstream.closeFrame();
            }
            
            bitstream.uninitialize();
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


В этом примере мы открываем входной поток MP3 файла FileInputStream, создаем Bitstream объект и используем его для считывания заголовка фрейма с помощью readFrame(). Затем мы можем получать информацию о семпле, используя объект SampleBuffer. Важно закрыть фрейм с помощью closeFrame() после каждой итерации цикла, чтобы считывать следующий фрейм.


После завершения чтения файла необходимо вызвать uninitialize(), чтобы освободить ресурсы, занятые Bitstream.

Пользователь

от brooklyn , 2 месяца назад

@adrien.waters 

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