Получение названия, исполнителя / автора и продолжительности файла.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 и выше. Поэтому всегда предпочитайте последнюю версию, чтобы избежать проблем с совместимостью.

Другие вопросы по тегам