用java获取mp3文件播放时长和tag信息
2012-05-21 09:21
99 查看
需要从mp3文件拿到mp3播放时长,折腾了几个小时,绕了弯路,大致记录一下。
先是找到mp3fenge这个分割mp3文件的开源项目 http://code.google.com/p/mp3fenge/
发现用它的API得到trackLength对很多文件处理报错。在他的项目中看到jaudiotagger这个700多K的包,猜测其是解析mp3文件的主要处理库。但粗找了一下关于这个包的用法,没找到,于是找别的解析包。
一时间瞎试了好几个包 jlayer1.0.1.zip mp3spi1.9.5.zip jid3lib-0.5.4.zip 都有问题(走马观花的试用,多半是我用的有问题)。
用网上经典的那段代码
一直报错。又看到很多帖子说是需要装 jmf,然后下载jmf-2_1_1e-alljava.zip安装还是报错。 最可恶是 oracle官网上说 jmf支持mp3格式,http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html
到下载页面 http://www.oracle.com/technetwork/java/javase/download-137625.html
进入download链接,竟然找不到 JavaMP3plugin.zip 的下载。
google了半天也没找到JavaMP3plugin的下载和资料,只要作罢。
最后,冷静下来,专心找 jaudiotagger 包的资料,找到项目主页http://www.jthink.net/jaudiotagger/
下载 jaudiotagger-2.0.4-20111207.115108-15 这个版本
简单的几行代码
就搞定了!
原来不能解析的mp3文件测试都通过。也不用装什么JMF,只需要包含这一个包即可。
另外,jaudiotagger用的是jdk的logging,我还不会设置jdk log的全局级别(如有知道者请告知) 就使用了
这些代码来避免jaudiotagger输出很多log信息。
总结: 找资料先找官网,我开始就是想找 jaudiotagger 的中文资料,结果没找到合适的内容,然后瞎找了一堆项目。
给懒人用的测试代码
先是找到mp3fenge这个分割mp3文件的开源项目 http://code.google.com/p/mp3fenge/
发现用它的API得到trackLength对很多文件处理报错。在他的项目中看到jaudiotagger这个700多K的包,猜测其是解析mp3文件的主要处理库。但粗找了一下关于这个包的用法,没找到,于是找别的解析包。
一时间瞎试了好几个包 jlayer1.0.1.zip mp3spi1.9.5.zip jid3lib-0.5.4.zip 都有问题(走马观花的试用,多半是我用的有问题)。
用网上经典的那段代码
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
Map<?, ?> properties = fileFormat.properties();
Long ms = (Long) properties.get("duration");
一直报错。又看到很多帖子说是需要装 jmf,然后下载jmf-2_1_1e-alljava.zip安装还是报错。 最可恶是 oracle官网上说 jmf支持mp3格式,http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html
MP3 support for JMF
We are excited to announce MP3 support for JMF! Please proceed to the download page to get your hands on this highly anticipated addition to JMF.
到下载页面 http://www.oracle.com/technetwork/java/javase/download-137625.html
Unzip the JavaMP3plugin.zip in the JRE directory of your choice.
The included jar file (mp3plugin.jar) contains a Java Sound plugin as well as a Java Media Framework plugin for playing MPEG-2 Layer 3 Audio.
进入download链接,竟然找不到 JavaMP3plugin.zip 的下载。
google了半天也没找到JavaMP3plugin的下载和资料,只要作罢。
最后,冷静下来,专心找 jaudiotagger 包的资料,找到项目主页http://www.jthink.net/jaudiotagger/
下载 jaudiotagger-2.0.4-20111207.115108-15 这个版本
简单的几行代码
public static int getMp3TrackLength(File mp3File) {
try {
MP3File f = (MP3File)AudioFileIO.read(mp3File);
MP3AudioHeader audioHeader = (MP3AudioHeader)f.getAudioHeader();
return audioHeader.getTrackLength();
} catch(Exception e) {
return -1;
}
}
就搞定了!
原来不能解析的mp3文件测试都通过。也不用装什么JMF,只需要包含这一个包即可。
另外,jaudiotagger用的是jdk的logging,我还不会设置jdk log的全局级别(如有知道者请告知) 就使用了
AudioFileIO.logger.setLevel(Level.SEVERE);
ID3v23Frame.logger.setLevel(Level.SEVERE);
ID3v23Tag.logger.setLevel(Level.SEVERE);
这些代码来避免jaudiotagger输出很多log信息。
总结: 找资料先找官网,我开始就是想找 jaudiotagger 的中文资料,结果没找到合适的内容,然后瞎找了一堆项目。
给懒人用的测试代码
public static void test1() throws Exception {
File [] dirs = new File[] {
new File("F:/myvoices"),
new File("F:/music")
};
for(File dir : dirs) {
File [] fs = dir.listFiles();
for(File file : fs) {
int length = Mp3Util.getMp3TrackLength(file);
if(length <= 0) {
System.err.println("###出错" + file.getName() + "=" + Mp3Util.getMp3TrackLength(file));
} else {
System.out.println(file.getName() + "=" + Mp3Util.getMp3TrackLength(file));
}
}
}
}
相关文章推荐
- 用java获取mp3文件播放时长和tag信息
- 用java获取mp3文件播放时长和tag信息
- C# 获取 mp3文件信息(tag信息)
- java获取mp3的时长和播放mp3文件
- 编写Python脚本来获取mp3文件tag信息的教程
- C#获取文件详细备注信息,MP3的Tag等等
- java 获取MP3文件播放时长
- 实现php获取mp3文件元信息如播放时间歌曲作者等
- 编写Python脚本来获取mp3文件tag信息的教程
- java 获取MP3文件时长等信息
- Java获取音频文件(MP3)的播放时长
- Python实例获取mp3文件的tag信息
- Android 播放mp3 tag乱码分析之java 篇
- Dive Into Python 学习记录3-对获取某文件夹下MP3文件信息的代码构成分析
- java播放MP3/APE音乐文件
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
- C#获取mp3 Tag信息
- 获取MP3文件信息的代码
- java获取properties配置文件中的信息
- android获取MP3文件的歌曲信息