Получение названия, исполнителя / автора и продолжительности файла.wav
Я пытаюсь получить свойства .wav
файл, который я использую в своем проекте Java, используя следующий код. Однако, когда я запускаю этот код методы format.getProperty("title")
, format.getProperty("author")
, а также format.getProperty("duration")
все возвращают ноль. Должен ли я получить эти детали по-другому?
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(wavFile);
AudioFormat format = audioInputStream.getFormat();
Object[] temp = {false,
format.getProperty("title"),
format.getProperty("author"),
format.getProperty("duration")};
1 ответ
С файлами WAV сложно работать, хотя они могут содержать несколько типов метаданных. В зависимости от используемого программного обеспечения и кодировщика (16/32-битная PCM) у файла могут быть разные конфигурации, и Java Sound API столкнется с проблемами при чтении этих метаданных.
Я перепробовал множество инструментов и библиотек, посвященных мета-тегам аудио (таких как Apache Tika, jd3lib, mp3agic, Beaglebuddy и т. Д.), И большинство из них отлично работают с MP3 или другими аудиоформатами, но не для файлов WAV.
Видимо, лучше всего справиться с этим Jaudiotagger. Это просто, быстро, и вы можете достичь своей цели, сделав что-то вроде:
AudioFile f = AudioFileIO.read(wavFile);
WavTag tag = (WavTag) f.getTag();
Object[] temp = {false,
tag.getFirst(FieldKey.TITLE),
tag.getFirst(FieldKey.ARTIST),
f.getAudioHeader().getTrackLength() // In seconds
};
Также обратитесь по следующим ссылкам:
Примечание. Поддержка этой функции была добавлена в версии 2.2.4 и выше. Поэтому всегда предпочитайте последнюю версию, чтобы избежать проблем с совместимостью.