Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

210
Vistas
¿Cómo reproduzco un audio en un bucle en Java?

Quiero reproducir solo un audio en un bucle cada vez que esto haya terminado. Tengo que decir que es solo música de fondo y se está ejecutando en un hilo. Aquí está el código:

 package Generator; import javazoom.jl.player.Player; import java.io.FileInputStream; import java.io.FileNotFoundException; import javazoom.jl.decoder.JavaLayerException; public class Reproductor { Player reproductor; public void reproducir() throws FileNotFoundException, JavaLayerException { reproductor = new Player(new FileInputStream("C:\\Users\\Leonardo\\Desktop\\config generator\\Recursos\\Triage at dawn.mp3")); new Thread () { @Override public void run() { try { reproductor.play(); //This just play the audio for the first time. } catch (JavaLayerException ex) { } } }.start(); } public void parar() { if(reproductor != null) { reproductor.close(); } }
over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

tengo una solucion para ti. crea un nuevo archivo java y llámalo como quieras. Luego haz este código:

 class Main{ public static void main(String[] args) { int length = 10000000000, numberOfTimes = 5; Reproducer reproducer = new Reproducer(); for(int j =0;j < numberOfTimes;i++){ reproducer.reproducir(); for(int i =0;i < length;i++){} } } }
over 4 years ago · Santiago Trujillo Denunciar

0

Encontré el código fuente: https://github.com/umjammer/jlayer/tree/master/src/main/java/javazoom/jl/player/advanced

Debe usar un AdvancedPlayer en lugar de un Player . Le permite registrar un PlaybackListener que recibirá un PlaybackEvent cuando la música se detenga.

Este código debería hacer el truco:

 package Generator; import javazoom.jl.player.Player; import java.io.FileInputStream; import java.io.FileNotFoundException; import javazoom.jl.decoder.JavaLayerException; public class Reproductor { Player reproductor; public void reproducir() throws FileNotFoundException, JavaLayerException { reproductor = new Player(new FileInputStream("C:\\Users\\Leonardo\\Desktop\\config generator\\Recursos\\Triage at dawn.mp3")); PlaybackListener myListener = new PlaybackListener() { public void playbackStarted(PlaybackEvent evt){ // Do nothing } public void playbackFinished(PlaybackEvent evt){ // Restart reproductor.play(); } }; reproductor.setPlayBackListener( myListener ); new Thread () { @Override public void run() { try { reproductor.play(); //This just play the audio for the first time. } catch (JavaLayerException ex) { } } }.start(); } public void parar() { if(reproductor != null) { reproductor.close(); } }
over 4 years ago · Santiago Trujillo Denunciar

0

Veo que estás usando Javazoom.

Mirando la documentación de esta biblioteca que encontré en github, hay una clase que debería funcionar mejor: AdvancedPlayer en combinación con PlaybackListener .

Si esto es similar a la mayoría de los oyentes en Java, se puede configurar para detectar cuando el audio ha terminado y, en ese caso, llamar a otra reproducción. Sin embargo, ha pasado mucho tiempo desde que trabajé con esta biblioteca, y todo lo que hice fue usarla para convertir archivos ogg/vorbis a PCM, por lo que no puedo ayudarlo con el código específico necesario.

Si puede usar archivos wav, sería mucho más fácil usar la clase Clip de Java y su método loop() . Las conversiones de archivos mp3 a wav se pueden realizar con una herramienta como Audacity , si su aplicación permite preparar los recursos de antemano.

Si sabe exactamente qué código va a reproducir, otra posibilidad sería determinar la duración que puede estar presente en alguna información de encabezado, o abrirlo nuevamente en Audacity , y almacenar la información de duración en su proyecto. Luego, para el código de reproducción, agregue un Thread.sleep() para la duración antes del bucle. Esto probablemente no será muy confiable.

over 4 years ago · Santiago Trujillo Denunciar

0

Mientras intentaba resolver algunos problemas, encontré una manera más fácil de hacerlo. Consulta este enlace para encontrar la solución . Mi código terminó así:

 package Generator; import java.io.FileInputStream; import java.io.FileNotFoundException; import javazoom.jl.decoder.JavaLayerException; import javazoom.jl.player.Player; public class Reproductor extends Thread{ private String ruta; private boolean bucle; private Player reproductor; public Reproductor(String ruta, boolean bucle) { this.ruta = ruta; this.bucle = bucle; } public void run() { try { do{ FileInputStream buff = new FileInputStream(ruta); reproductor = new Player(buff); reproductor.play(); try { reproductor.play(); } catch (JavaLayerException ex) {} }while(bucle); } catch(FileNotFoundException | JavaLayerException ioe) {} } public void parar() { bucle = false; reproductor.close(); this.interrupt(); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda