检索.wav文件的标题,艺术家/作者和持续时间

时间:2016-11-17 14:20:33

标签: java audioformat audioinputstream

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

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

1 个答案:

答案 0 :(得分:1)

WAV文件难以使用,即使they can hold several metadata types。根据所使用的软件和编码器( 16/32位PCM ),您可以对文件进行不同的配置,Java Sound API将面临读取此元数据的问题。

我尝试了许多专注于音频元标记的工具和库(例如Apache Tikajd3libmp3agicBeaglebuddy等等,并且大多数都可以工作很好的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版本添加了对此功能的支持。所以,总是更喜欢the latest version来驱逐兼容性问题。