Это вопрос о формате файлов MP3.
Я искал способ получить продолжительность MP3. Поскольку я использую JLayer SPI для декодирования MP3, я обнаружил, что это возможно, когда источником звука является файл.
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(source);
Long microseconds = (Long) fileFormat.properties().get("duration");
System.out.println(microseconds);
Однако, когда я беру аналогичный код и тот же MP3 и меняю источник на URL-адрес, JLayer не предоставляет продолжительность:
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(source.toURI().toURL());
Long microseconds = (Long) fileFormat.properties().get("duration");
System.out.println(microseconds);
Это важное различие, потому что часть музыки, которую я хочу воспроизвести, будет получена из URL-адресов, а не из локальных файлов.
Подозреваю, что это связано с ограничениями формата файла.
Это приводит меня к очень простому вопросу. Можно ли узнать продолжительность MP3 до того, как весь файл будет загружен?