2015-04-10 2 views
0

Привет у меня есть этот код, чтобы открыть звуковой файл WAV, но оно не работаетJava Sound File Not Playing3

import java.io.IOException; 
import java.net.URL; 
import javax.sound.sampled.AudioInputStream; 
    import javax.sound.sampled.AudioSystem; 
    import javax.sound.sampled.Clip; 
import javax.sound.sampled.DataLine; 
import javax.sound.sampled.LineUnavailableException; 
import javax.sound.sampled.Mixer; 
import javax.sound.sampled.UnsupportedAudioFileException; 
import sun.applet.Main; 


public class Sound1 { 


public static Mixer mixer; 
public static Clip clip; 
public static void main(String[] args)   {    
    // TODO code application logic here 
    Mixer.Info[] mixinfo =AudioSystem.getMixerInfo(); 
    for(Mixer.Info info :mixinfo) 
    { 
     System.out.println(info.getName()+"...."+info.getDescription()); 
     mixer = AudioSystem.getMixer(mixinfo[0]); 

    } 
     DataLine.Info datainfo =new DataLine.Info(Clip.class, null); 

     try 
     { 
      clip =(Clip)mixer.getLine(datainfo); 
     } 
     catch(LineUnavailableException lue) 
     { 
      lue.printStackTrace(); 
     } 
     try 
     { 
      URL soundurl = Main.class.getResource("1.wav"); 
      AudioInputStream audiostream =         `enter code here`AudioSystem.getAudioInputStream(soundurl); 
      clip.open(audiostream); 

     } 
     catch(LineUnavailableException lue) 
     { 
      lue.printStackTrace(); 
     } 
     catch(IOException ioe) 
     { 
      ioe.printStackTrace(); 
     } 

     clip.start(); 

     do 
     { 
      try { Thread.sleep(50);} 
      catch (InterruptedException ie){ ie.printStackTrace();} 
     }while(clip.isActive()); 

      } 

     } 

я наклоняю запустить программу есть ошибка, пожалуйста, мне нужна помощь я думаю, что здесь ошибка "URL soundurl = Main.class.getResource ("1.wav");» хотя я добавляю файл i.wav к проекту

+0

Всегда копировать/вставить и ошибка исключение выход! –

+0

Является 1.wav в том же каталоге, что и «Main»? В вашем коде есть некоторые странные вещи, например, «введите код здесь ..., который испортит ситуацию. –

ответ

0

Не все миксеры доступны для аудиовыхода (некоторые из них только для аудиовхода). В вашем коде вы всегда выбираете первый микшер в массиве Mixer.Info [], который, возможно, не поддерживает аудиовыход. Вы можете проверить это, позвонив

mixer.isLineSupported(datainfo); 

Если вы на самом деле не нуждаясь в смеситель (вы Usally нужно при воспроизведении нескольких звуковых файлов, которые должны быть синхронизированы) вы можете играть простой файл .wav с

public void play(File file) throws LineUnavailableException{ 
    Clip clip=AudioSystem.getClip(); 
    clip.open(AudioSystem.getAudioInputStream(file)); 
    clip.loop(1); 
} 

Дополнительная информация: Accessing Audio System Resources