Wav wird nicht abgespielt

Nao

Grünschnabel
import javax.sound.sampled.*;
import java.io.*;

Code:
public class Soundspielen {
    
    public Soundspielen() {
         try{
             AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("C:/alert.wav"));
             AudioFormat af= audioInputStream.getFormat();
             int size= (int) (af.getFrameSize() * audioInputStream.getFrameLength());
             byte[] audio= new byte[size];
             DataLine.Info info= new DataLine.Info(Clip.class, af, size);
             audioInputStream.read(audio, 0, size);
             
             for(int i=0; i < 40; i++) {
                 Clip clip = (Clip) AudioSystem.getLine(info);
                 clip.open(af, audio, 0, size);
                 clip.start();
             }
         }catch(Exception e){ e.printStackTrace(); }
         
     }
    
    }

Wenn ich das programm audführedan komm nur ein sehr kurzer ton und mehr nicht von unfefähr 30 sek
 
Hallo,

bei mir funktioniert folgender Code ohne Probleme, aber mit der Klasse Clip hab ich das auch noch nicht hinbekommen...

Java:
import java.io.File;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;

public class Soundspielen
{
    public static void main(String args[])
    {
        new Soundspielen();
    }
    public Soundspielen()
    {
        SourceDataLine sdl = null;
        try
        {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("C:/test2.wav"));
            AudioFormat af = audioInputStream.getFormat();
            
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, af);
            sdl = (SourceDataLine) AudioSystem.getLine(info);
            sdl.open(af);
            sdl.start();

            byte[] buffer = new byte[524288];
            int bytesRead = 0;
            while (bytesRead != -1)
            {
                bytesRead = audioInputStream.read(buffer, 0, buffer.length);
                if (bytesRead >= 0)
                    sdl.write(buffer, 0, bytesRead);
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        } finally
        {
            sdl.drain();
            sdl.close();
        }
    }
}

MfG
 
Zurück