【问题标题】:Retrieving the title, artist/author and duration of a .wav file检索 .wav 文件的标题、艺术家/作者和持续时间
【发布时间】:2016-11-17 14:20:32
【问题描述】:

我正在尝试使用以下代码获取我在 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")};

【问题讨论】:

  • 我很确定 .wav 文件不包含标题或作者信息。

标签: java audioformat audioinputstream


【解决方案1】:

即使they can hold several metadata types,WAV 文件也很难处理。根据所使用的软件和编码器(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 来解决兼容性问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多