Java I/O mp3文件读取
我想阅读mp3文件的详细信息,如持续时间、比特率、艺术家等。 我可以通过阅读以下几行文字找到一些信息:Java I/O mp3文件读取,java,file,io,Java,File,Io,我想阅读mp3文件的详细信息,如持续时间、比特率、艺术家等。 我可以通过阅读以下几行文字找到一些信息: File f=fc.getSelectedFile(); FileInputStream inp=null; byte[] buffer=new byte[128]; inp= new FileInputStream(f) inp.skip(f.length()-128); inp.read(buffer); } Str
File f=fc.getSelectedFile();
FileInputStream inp=null;
byte[] buffer=new byte[128];
inp= new FileInputStream(f)
inp.skip(f.length()-128);
inp.read(buffer);
}
String str=new String(buffer);
tf.setText(str);
我想把所有的细节都弄清楚。我怎样才能做到这一点
使用MP3SPI获取持续时间:
private static void getDurationWithMp3Spi(文件文件)抛出不支持的数据文件异常,IOException{
AudioFileFormat文件格式=AudioSystem.getAudioFileFormat(文件);
if(文件格式实例of TAudioFileFormat){
映射属性=((TAudioFileFormat)fileFormat).properties();
String key=“持续时间”;
长微秒=(长)属性.get(键);
int mili=(int)(微秒/1000);
整数秒=(百万分之一/1000)%60;
最小整数=(千分之几)/60;
System.out.println(“time=“+min+”:“+sec”);
}否则{
抛出新的不支持DaudioFileException();
}
}您可以使用apache tika Java API对MP3中的元数据进行解析,如标题、专辑、流派、持续时间、作曲家、艺术家等。。所需JAR为tika-parsers-1.4、tika-core-1.4 示例程序:
package com.parse.mp3;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class AudioParser {
/**
* @param args
*/
public static void main(String[] args) {
String fileLocation = "G:/asas/album/song.mp3";
try {
InputStream input = new FileInputStream(new File(fileLocation));
ContentHandler handler = new DefaultHandler();
Metadata metadata = new Metadata();
Parser parser = new Mp3Parser();
ParseContext parseCtx = new ParseContext();
parser.parse(input, handler, metadata, parseCtx);
input.close();
// List all metadata
String[] metadataNames = metadata.names();
for(String name : metadataNames){
System.out.println(name + ": " + metadata.get(name));
}
// Retrieve the necessary info from metadata
// Names - title, xmpDM:artist etc. - mentioned below may differ based
System.out.println("----------------------------------------------");
System.out.println("Title: " + metadata.get("title"));
System.out.println("Artists: " + metadata.get("xmpDM:artist"));
System.out.println("Composer : "+metadata.get("xmpDM:composer"));
System.out.println("Genre : "+metadata.get("xmpDM:genre"));
System.out.println("Album : "+metadata.get("xmpDM:album"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
}
}
}
如何手动查找mp3文件的长度
package com.parse.mp3;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class AudioParser {
/**
* @param args
*/
public static void main(String[] args) {
String fileLocation = "G:/asas/album/song.mp3";
try {
InputStream input = new FileInputStream(new File(fileLocation));
ContentHandler handler = new DefaultHandler();
Metadata metadata = new Metadata();
Parser parser = new Mp3Parser();
ParseContext parseCtx = new ParseContext();
parser.parse(input, handler, metadata, parseCtx);
input.close();
// List all metadata
String[] metadataNames = metadata.names();
for(String name : metadataNames){
System.out.println(name + ": " + metadata.get(name));
}
// Retrieve the necessary info from metadata
// Names - title, xmpDM:artist etc. - mentioned below may differ based
System.out.println("----------------------------------------------");
System.out.println("Title: " + metadata.get("title"));
System.out.println("Artists: " + metadata.get("xmpDM:artist"));
System.out.println("Composer : "+metadata.get("xmpDM:composer"));
System.out.println("Genre : "+metadata.get("xmpDM:genre"));
System.out.println("Album : "+metadata.get("xmpDM:album"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
}
}
}