2012-11-03 145 views
3

我有这样的代码,这里读取MP3文件的Java检测的音频文件(MP3)

import java.io.File; 
import java.io.IOException; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.UnsupportedAudioFileException; 

    public class Sound { 
     public static void main(String[] args) { 
      File sampleFile = new File("test.mp3"); 
      try { 
       AudioSystem.getAudioFileFormat(sampleFile); 
      } catch (UnsupportedAudioFileException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 

的问题是,它返回文件不支持例外,这里的文件是一个mp3文件。 Java不支持MP3文件?如果是的话,其他人如何验证音频文件?(如ogg,wav)

+0

只支持[这些](http://docs.oracle.com/javase/1.5.0/docs/api/javax/sound/sampled/AudioFileFormat.Type.html),而不支持mp3。 – Esailija

+0

@Esailija有无论如何检查它是否是一个MP3文件? – KyelJmD

+0

请参阅[Java Sound Wiki](http://stackoverflow.com/tags/javasound/info)中**服务提供程序接口**和** MP3解码支持部分。 –

回答

3

您可以查看Apache Tika库。它可以通过其内容检测文件的类型并提取文件元数据。它supports mp3格式。

以下是使用Apache Tika进行文件类型检测的example

+1

做它支持除mp3以外的其他音频类型? – KyelJmD

+0

我似乎无法看到Apache Tika Library的代码示例,我将如何检测文件的类型? – KyelJmD

+0

@KyelJmD是的,它支持Java支持的音频格式。 –

1

您需要添加MP3SPI库,以便java音频api可以识别和解码mp3文件。

+0

它也支持其他音频媒体类型吗? – KyelJmD

+0

@KyelJmD:名称中的'MP3'这个词表明不,它仅适用于mp3。 –