Musik in einer Applikation abspielen

Lautsprecher

Erfahrenes Mitglied
Hallo,
hat vielleicht von Euch jemand schon mal ausprobiert eine wav-Datei in einer Java-Applikation abzuspielen?
Ich bin gerade am überlegen ob ich so eine Spielerei noch bei mir einbauen soll!
Bin jedoch momentan noch dabei mich über die nötigen Bausteine zu informieren unter anderem bei javainsel!
Wenn jemand vielleicht ein wenig Ahnung von der Materie hat und evtl. vielleicht ein Codebeispiel hätte wie man an die Sache ran geht, wäre ich sehr dankbar.

Grüße
 
Also wav spielt man Aufgrund der Dateigröße prinzipiel über einen Stream ab. Infprmieren dich mal über
SourceDataLine und TargetDataLine und die Java Sound Api.
Hier mal ein Bseispiel mit einem Stream:

Code:
  import java.io.*;
  import javax.sound.sampled.*;

public class StreamingDemo{

   public static void main(String[] args){
      if(args.length != 1){
           System.out.println("Klangdatei angeben!");
           System.exit(0);
        }
        
        AudioInputStream inStrom = null;
        AudioFormat format = null;

     try{
        File datei = new File(args[0]);
        inStrom = AudioSystem.getAudioInputStream(datei);

        format = inStrom.getFormat();
        
       if(format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED){
          AudioFormat neu = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                                                                 format.getSampleRate(),
                                                                 2 * format.getSampleSizeInBits(),
                                                                 format.getChannels(),
                                                                 2 * format.getFrameSize(),
                                                                 format.getFrameRate(), true);
         inStrom = AudioSystem.getAudioInputStream(neu, inStrom);
         format = neu;
       }
     }
     catch(Exception ex){System.out.println(ex);}

    SourceDataLine line = null;
    DataLine.Info info = new DataLine.Info(SourceDataLine.class,format);

    try{
       line = (SourceDataLine) AudioSystem.getLine(info);
       line.open(format);
       line.start();

       int num = 0;
       byte[] audioPuffer = new byte[5000];
       
       while(num != -1){
          try{
            num = inStrom.read(audioPuffer,0,audioPuffer.length);
            if(num >= 0)
                 line.write(audioPuffer,0,num);
          }
       catch(Exception ex){System.out.println(ex);} 
       }
       line.drain();
       line.close();
    }
    catch(Exception ex){System.out.println(ex);}
   System.exit(0);
}
}

Hoffe ich konnte dir helfen

Greetz Master
 
Zurück