PDA

View Full Version : come inserire un file audio in un programma java?


davi5193
14-03-2011, 22:35
ciao a tutti, come da titolo, come posso fare per inserire una traccia audio in un programma java?
praticamente sto realizzando un programma, quando clicco su un bottone dovrei far partire una traccia audio (midi, mp3, wmv, qualsiasi formato può andare bene)
su internet ho trovato questo codice:

import sun.audio.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class Sound
{
public static void main(String[] args)
{
JFrame frame= new JFrame();
frame.setSize(200,200);
JButton button=new JButton("play");
frame.add(button);
frame.setVisible(true);
button.addActionListener(new AL());
}
public static class AL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
music();
}
}
public static void music()
{
AudioPlayer MGP= AudioPlayer.player;
AudioStream BGM;
AudioData MD;
ContinuousAudioDataStream loop= null;
try
{
BGM= new AudioStream(new FileInputStream("midi.wav"));
MD= BGM.getData();
loop= new ContinuousAudioDataStream(MD);
}
catch(IOException error)
{}
MGP.start(loop);
}
}

non sembra difficilissimo, però non riesco a far partire la traccia audio quando clicco sul bottone... quando compilo mi da 7 warning:confused: mi lascia mandare in esecuzione però se clicco il bottone non fa nulla, come se l'ascoltatore fosse vuoto...

qualcuno ha qualche consiglio? o un metodo più efficace... mi interessa solo farla partire senza troppe pretese...

PGI-Bis
15-03-2011, 01:42
Per caricare il file audio:

AudioInputStream audio = AudioSystem.getAudioInputStream(un file o un url o un input stream)
Clip clip = AudioSystem.getClip();
clip.open(audio);

Quando vuoi "suonare":

clip.loop(1);

Circa il formato audio, wav e au dovrebbero andare, per gli mp3 bisogna scaricare un plug-in separato.

davi5193
15-03-2011, 15:59
in wav va benissimo:)
per "fermare" la riproduzione come potrei fare?
poi ho tutto quello che mi serve:)

PGI-Bis
15-03-2011, 16:01
prova con

clip.stop()

davi5193
15-03-2011, 16:07
si funziona:) pensavo fosse chissà quale metodo:D
grazie 1000 per l'aiuto:)