检索 .wav 文件的标题、artist/author 和持续时间

Retrieving the title, artist/author and duration of a .wav file

我正在尝试使用以下代码获取我在 Java 项目中使用的 .wav 文件的属性。但是,当我 运行 此代码时,方法 format.getProperty("title")format.getProperty("author")format.getProperty("duration") 全部 return 为空。我应该以不同的方式获取这些详细信息吗?

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(wavFile);
AudioFormat format = audioInputStream.getFormat();
Object[] temp = {false,
        format.getProperty("title"),
        format.getProperty("author"),
        format.getProperty("duration")};

WAV 文件很难处理,尽管 they can hold several metadata types. Depending upon the software and encoder used (16/32-bit PCM) you can have different configurations for the file and the 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
};

另请参考以下链接:

Note: The support for this feature was added from version 2.2.4 above. So, always prefer the latest version to evict compatibility problems.