MP3 Продолжительность Java - PullRequest
1 голос
/ 21 июля 2011

Ужасно пытаясь найти точное время для набора MP3. У меня есть следующие свойства, которые создаются с помощью библиотеки MP3SPI 1.9.5 .

//      mp3.crc=true
//      mp3.copyright=true
//      mp3.padding=false
//      mp3.channels=1
//      mp3.version.mpeg=2.5
//      mp3.length.bytes=6425480
//      mp3.framerate.fps=27.777779
//      mp3.framesize.bytes=140
//      duration=1606356000
//      mp3.version.layer=3
//      mp3.length.frames=44621
//      mp3.frequency.hz=8000
//      mp3.header.pos=0
//      mp3.bitrate.nominal.bps=16000
//      mp3.vbr.scale=0
//      mp3.version.encoding=MPEG2DOT5L3
//      mp3.mode=3
//      mp3.vbr=false
//      mp3.original=false

Теперь файл, который я читаю, имеет продолжительность 47:35, как сообщает iTunes, и 48:50 с помощью Mac Preview.

Когда я получаю продолжительность в Java с использованием библиотеки, я получаю 26: 46:

AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(f);
            Map<?, ?> properties = ((TAudioFileFormat) fileFormat).properties();
            String key = "duration";
            long duration = ((Long) properties.get("duration")) / 1000;
            {
                String frameBased = String.format("Duration Tag: %d hours, %d min, %d sec",
                        TimeUnit.MILLISECONDS.toHours(duration),
                        TimeUnit.MILLISECONDS.toMinutes(duration),
                        TimeUnit.MILLISECONDS.toSeconds(duration) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
                    );
                    System.out.println(frameBased);
            }

Мне не очень повезло, поэтому мне было интересно, делаю ли я что-то глупое или могу ли я использовать информацию в тегах MP3 для вычисления моей фактической длины? Поскольку iTunes правильно сообщает об этом, я полагаю, что смогу.

1 Ответ

2 голосов
/ 21 июля 2011

Учитывая, что iTunes правильно сообщает об этом, я полагаю, что смогу.

Один безотказный способ определить длину трека - преобразовать его в стандартный * 1005.* а затем измерьте AIS.

Или, согласно комментарию @Kilian Foth:

К сожалению, это также отказоустойчивый способ only .

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