Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java I/O mp3文件读取_Java_File_Io - Fatal编程技术网

Java I/O 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

我想阅读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);      

    }
    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();
    }
    }
}