Java - Reproducir WAV dentro del .jar

   
Vista:

Reproducir WAV dentro del .jar

Publicado por Enric (2 intervenciones) el 17/10/2011 18:58:31
Resulta que estoy montando una pequeña aplicación de Java con Netbeans.
Lo que necesito es reproducir sonidos .wav que se incorporan dentro del .jar.
La cuestion, es que no quiero utilizar librerias externas, ni archivos sonidos externos, ya que si voy con mi .JAR a la oficina, a casa, etc...solo necesite el .JAR para escuchar los sonidos.

Me he creado una carpeta "Sonidos" dentro de "src" y alli tengo mis sonidos. (Proyecto/src/sonidos). Es la manera de incorporar ficheros a un JAR,no?? Con independencia de esos ficheros...
En el momento de reproducir el sonido hago lo siguiente:

1
2
3
4
Clip sonido = AudioSystem.getClip();
            File f = new File(getClass().getResource(/Sonidos/alarma.wav).toURI());
            sonido.open(AudioSystem.getAudioInputStream(f));
            sonido.start();



Resulta que si ejecuto el programa con el netbeans, me reproduce los sonidos, pero a la que traslado solamente mi .JAR a otro ordenador, no se reproduce...

Alguna idea?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Reproducir WAV dentro del .jar

Publicado por Enric (2 intervenciones) el 19/10/2011 19:38:32
Problema solucionado.
El codigo correcto para que funcione es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
InputStream path;
path = getClass().getResourceAsStream("/Sonidos/alarma.wav");
 
try
{
   Clip sonido = AudioSystem.getClip();
   sonido.open(AudioSystem.getAudioInputStream(path));
   sonido.start();
 
}
catch(Exception fallo)
{
    System.out.println(fallo);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Reproducir WAV dentro del .jar

Publicado por Fernando (1 intervención) el 19/03/2014 17:32:14
en la direccion dle archivo de audio esta el error... deberia ser algo asi como ../sonidos/alarma.wav
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reproducir WAV dentro del .jar

Publicado por Kailcor (1 intervención) el 02/08/2015 02:10:25
Hola amigos, como dice el amigo arriba ciertamente ese es el código que funciona
¿Pero por que?

Yo tenia este código, que me funcionaba con archivos midi, pero no con los wav (aunque en el netbeans reproduce los dos),. Cuando lo exportaba al Jar dejaba de escucharse, y si descomprimia el jar y ejecutaba desde la consola de comandas con el comando java , ahí si me funcionaba. ¿Por que este código no funciona con los wav compresos en un jar?
¿Será que la compresion altera de alguna forma el formato???


MI Código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
try {
//			
//			AudioInputStream ais =
//				AudioSystem.getAudioInputStream(
//					getClass().getResourceAsStream(s)
//				); //Obtiene el archivo de audio y lo transforma a un flujo de bits 
//			AudioFormat baseFormat = ais.getFormat();//codifica el flujo de bits a un formato
//			AudioFormat decodeFormat = new AudioFormat(
//				AudioFormat.Encoding.PCM_SIGNED,//determina el tipo de PCM
//				baseFormat.getSampleRate(),//Obtiene el rate de la muestra
//				16,
//				baseFormat.getChannels(),//Canales de audio
//				baseFormat.getChannels() * 2,//Canales de audio
//				baseFormat.getSampleRate(),
//				false
//			);
//			AudioInputStream dais =
//				AudioSystem.getAudioInputStream(
//					decodeFormat, ais);//Decodifica finalmente el audio para manejarlo
//                        
//			clip = AudioSystem.getClip();//obtiene un clip para almacenar y reproducir el audio
//			clip.open(dais);//abre el archivo de audio.
//		}
//		catch(Exception e) {
//			e.printStackTrace();
//		}

A tu código le agregue lo siguiente, para usar un String en vez de un FIle.

1
clip.open(AudioSystem.getAudioInputStream(getClass().getResource(s)));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar