Нахождение Длительности файла MP3 в Java - PullRequest
1 голос
/ 22 апреля 2011

ОК, поэтому я попытался использовать теги ID3 для получения продолжительности, а также попытался использовать медиаплеер JMF.getDuration ().

player.getDuration().getSeconds()

Файл VBR. Существуют ли какие-либо легковесные библиотеки или что-то внутри JMF, которые можно было бы использовать для решения этой проблемы.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 23 апреля 2011

Я использую JAudioTagger для достижения этой цели.Приведенный ниже код даст вам длительность дорожки MP3.

int duration = 0;

try {
  AudioFile audioFile = AudioFileIO.read(new File("file.mp3"));
  duration = audioFile.getAudioHeader().getTrackLength();

} catch (Exception e) {
  e.printStackTrace();

}

Вы также можете преобразовать audioFile.getAudioHeader () в MP3AudioHeader и использовать метод getPreciseTrackLength (), чтобы получить более точную продолжительность.Однако это (я считаю) применимо только к файлам MP3 и никаким другим форматам (таким как файлы WAV).

0 голосов
/ 25 августа 2015

Я использую этот lib и этот код:

File f = new File("path/mp3");
    MediaLocator ml = null;
    Player p = null;
    try {
        ml = new MediaLocator(f.toURL());

        p = Manager.createPlayer(ml);
        p.start();
        while (true) {
            Thread.sleep(1000);
            System.out.println("Media Time :: "+p.getMediaTime().getSeconds());
            System.out.println("Duration :: "+p.getDuration().getSeconds());
            if(p.getMediaTime().getSeconds() == p.getDuration().getSeconds())
                break;
        }
        p.stop();
        p.deallocate();
        p.close();
    } catch (NoPlayerException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...