使用JAudioTagger获取跟踪持续时间?

时间:2012-02-22 17:34:59

标签: java audio

我正在尝试在像应用程序这样的媒体播放器中使用JAudioTagger来为每首歌曲的元数据进行交换,但是我没有看到用于轨道持续时间的字段。我肯定必须有一个,但我似乎无法找到它并且几个搜索没有发现任何东西。我正在查看:http://www.jthink.com/jaudiotagger/tagmapping.html和java docs。

有没有人有任何想法?谢谢你的帮助!

3 个答案:

答案 0 :(得分:7)

正如前面的回答所说,轨道长度没有存储在标签中,但可以从音频本身导出,这就是为什么它可以通过audioheader对象而不是标签本身访问,即

AudioFile audioFile = AudioFileIO.readFile("/somefile.mp3");
System.out.println(audioFile.getAudioHeader().getTrackLength());

如果是mp3,你可以将tracklength输出nicel格式化为mm:ss

System.out.println((Mp3AudioHeader)audioFile.getHeader().getTrackLengthAsString());

new MP3File("/somefile.mp3").getMP3AudioHeader().getTrackLengthAsString();

答案 1 :(得分:2)

对于大多数格式,长度不在标签中。

许多库(和媒体播放器),比如TagLib,estimate通过计算几百千字节文件(比特率)的长度并乘以它来为您提供。有时候这是非常错误的,但是,令人惊讶的部分时间,它运作得很好。

答案 2 :(得分:0)

我可以推荐mp4parser库,因为它以期望的精度返回持续时间(就像ffmepg一样)。