2010-06-27 3 views
0

다음 코드와 자바 사운드를 사용하고 있습니다 :SO에 설치된 코덱을 사용하도록 JavaSound를 만드는 방법이 있습니까?

public static void main(String[] args) throws Exception 
{ 
    JFrame frame = new JFrame(); 
    frame.setSize(200,200); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    JFileChooser fc = new JFileChooser(); 
    fc.showOpenDialog(null); 
    File f = fc.getSelectedFile(); 
    AudioInputStream ais = AudioSystem.getAudioInputStream(f); 
    AudioFormat format = ais.getFormat(); 
    AudioFormat decodedFormat = new AudioFormat(
       AudioFormat.Encoding.PCM_SIGNED, // Encoding to use 
        format.getSampleRate(),   // sample rate (same as base format) 
        16,    // sample size in bits (thx to Javazoom) 
        format.getChannels(),    // # of Channels 
        format.getChannels()*2,   // Frame Size 
        format.getSampleRate(),   // Frame Rate 
        false     // Big Endian 
      ); 
    SourceDataLine line = AudioSystem.getSourceDataLine(decodedFormat); 
    AudioInputStream dais = AudioSystem.getAudioInputStream(decodedFormat, ais); 
    line.open(decodedFormat); 
    line.start(); 
    byte[] b = new byte[1024]; 
    int i=0; 
    while(true) 
    { 
     i = dais.read(b, 0, b.length); 
     if(i == -1) 
      break; 
     line.write(b, 0, i); 
    } 
    line.drain(); 
    line.stop(); 
    line.close(); 
    ais.close(); 
    dais.close(); 


} 

그러나 MP3 재생, tihs 내가이를 사용하는 방법을 찾고 있었다 입력해도, 내 클래스 경로 ...에 자사의 확인을는 SPI 있어야합니다 코덱은 SO에 설치됩니다. 그럴 수있는 방법이 있습니까?

답변

0

I have used this to play MP3s 간단했습니다.

+0

나는 본다. 그러나 당신은 SO 코덱을 사용하지 않고있다. 내가했던 것처럼 클래스 패스에서 SPI를 사용하고 있습니다. 내가 이미 설치 한 SO 코덱과 함께 작동하도록 만들려고했다. – fredcrs