sonido reproductor reproducir musica mediaplayer archivos archivo agregar abrir java eclipse javafx pathname

reproductor - reproducir archivos de audio en java



Obtener un archivo mp3 para jugar usando javafx (4)

JavaFX EMBED un MP3 en el contenedor (en el contenedor) con NetBeans

Programé mi primer paquete JavaFX en NetBeans, y luego quise agregar sonido, un archivo de música mp3, incrustado en el frasco, dentro del frasco, para poder enviar el frasco por correo electrónico a mis amigos y reproducir la música en sus computadoras. . Gracias StackOverflow por su ayuda. Gracias especialmente al miembro que dijo "pon tu archivo de música EN EL JAR, getResourceAsStream () es la API que deseas usar". Me puso en el camino correcto, aunque terminé usando getResource (). Funciona.

PASO 1: Primero, tengo la música para tocar cuando toco ejecutar en NetBeans.

PASO 2: quería que la música repitiera (repita). Eventualmente lo entendí bien, gracias a los miembros de StackOverflow. Por favor mira mi código fuente

PASO 3: Finalmente recibí el mp3 de EMBED en el contenedor. Ahora, esto es importante. Al principio, la música se reprodujo en mi computadora, pero la jar la leyó en mi disco duro. Cuando cambié el nombre del mp3, el jar falló, no se ejecutó, no pudo encontrar el mp3. Tuve que incrustar el mp3 en el frasco, ponerlo dentro del frasco (en el frasco) de lo contrario no funcionaría en la computadora de otra persona. Ahí es donde getResource () hizo el truco.

PASO 4: Entonces envié mi tarro a mis amigos. Algunos proveedores de servicios no confían en un contenedor, me enviaron los correos electrónicos sin entregar. Otros proveedores de servicios no tienen un problema y entregaron los correos electrónicos. ¿Entonces qué hice? Cambié el nombre de * .jar a * .mp4 y los correos electrónicos fueron entregados, les pedí a mis amigos que lo cambiaran de * .mp4 a * .jar. Funcionó.

Aquí está mi código fuente. Estoy seguro de que no es perfecto, pero funciona, gracias a StackOverflow.

/* Of course, one needs to import the following gizmo’s (and others): */ import javafx.util.Duration; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; /* I want to EMBED the music inside the jar (in the jar). The secret seems to be getResource. The source code starts here, to EMBED the sound (DollyParton.mp3) into the jar: */ //************************ begin the music *********************** @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); play(); } public static void main(String[] args) { launch(args); } MediaPlayer musicplayer; { /* Put your music file IN THE JAR, "getResourceAsStream()" is the API you want to use. Put the DollyParton.mp3 into the Windows folder src/rockymountain. NetBeans automatically copies the mp3 to the folder build/classes/rockymountain. */ Media mp3MusicFile = new Media(getClass().getResource("DollyParton.mp3").toExternalForm()); musicplayer = new MediaPlayer(mp3MusicFile); musicplayer.setAutoPlay(true); musicplayer.setVolume(0.9); // from 0 to 1 //***************** loop (repeat) the music ****************** musicplayer.setOnEndOfMedia(new Runnable() { public void run() { musicplayer.seek(Duration.ZERO); } }); //*************** end of loop (repeat) the music ************** } //**************************** end of music *************************

Puse el mp3 en la carpeta de Windows src / rockymountain. Luego NetBeans copió automáticamente el mp3 a la carpeta build / classes / rockymountain. NetBeans no copia el mp3 a la carpeta / recursos, un archivo que creé innecesariamente, porque alguien lo dijo. La carpeta / resources no es necesaria, permanece vacía.

Cree un archivo Java ARchive (jar) usando NetBeans de la siguiente manera:

  1. Haga clic derecho en el nombre del proyecto

  2. Seleccionar propiedades

  3. Haga clic en empaque

  4. Compruebe Build JAR después de compilar

  5. Comprueba Comprimir archivo JAR

  6. Haga clic en Aceptar para aceptar cambios

  7. Haga clic derecho en el nombre del proyecto

  8. Seleccione Limpiar y compilar

    El archivo JAR está construido. Para verlo dentro de NetBeans:

  9. Haga clic en la pestaña Archivos

  10. Expandir ProjectName >> dist (distribución). El archivo jar está dentro de la carpeta dist.

He pasado horas buscando cómo obtener algún tipo de audio en eclipse y he tenido problemas en cada paso del camino. Actualmente tengo algo que debería funcionar pero me sale un error:

Excepción en el hilo "main" java.lang.IllegalArgumentException: nombre de archivo esperado como argumento en com.sun.javafx.css.parser.Css2Bin.main (Css2Bin.java:44)

Básicamente, he copiado esto de alguien que lo tenía funcionando. Me gustaría decir que la lib de FX se agrega donde debería estar. Sé que esto no es lujoso, pero solo estaba probando lo básico.

package b; import java.io.File; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; public class test { public static void main(String[] args){ String uriString = new File("C://Users//Mike//workspace//b//src//hero.mp3").toURI().toString() MediaPlayer player = new MediaPlayer( new Media(uriString)); player.play(); }}

También probé muchos nombres de ruta diferentes en caso de que fuera incorrecto sin suerte, también intenté copiar y pegar el nombre de ruta que obtuve en eclipse yendo a propiedades ex: /b/src/hero.mp3. La ayuda sería apreciada para sacarme de esta pesadilla.


Los archivos ubicados fuera del espacio de trabajo deben incluirse con file:// prefix. Un ejemplo simple que demuestra la funcionalidad es

public class Reproductor extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { Media media = new Media("file:///Movies/test.mp3"); //replace /Movies/test.mp3 with your file MediaPlayer player = new MediaPlayer(media); player.play(); } }


Si el archivo está en los resources/music esto funcionará y la aplicación será portátil, .mp3 inside the .jar :

Media media = null; try { media = new Media(getClass().getResource("/music/hero.mp3").toURI().toString()); } catch (URISyntaxException e) { e.printStackTrace(); }


Sospecho que tienes un problema al hacer referencia a los recursos integrados. Un recurso incrustado es cualquier archivo que se encuentre dentro del contexto de la aplicación (es decir, en este caso, almacenado dentro de la aplicación Jar).

Para obtener una referencia a estos recursos, debe utilizar Class#getResource , que devuelve una URL , que luego puede usar para cargar el recurso según sus requisitos, por ejemplo ...

public class Main extends Application { @Override public void start(Stage primaryStage) { String path = Test.class.getResource("/Kalimba.mp3").toString(); Media media = new Media(path); MediaPlayer mp = new MediaPlayer(media); mp.play(); System.out.println("Playing..."); } public static void main(String[] args) { launch(args); } }

Ahora, no pude hacer que funcione hasta que envolví en un contexto de Application ...