Obtenir un fichier mp3 à lire en utilisant javafx


J'ai passé des heures aujourd'hui à chercher comment obtenir une forme d'audio dans eclipse et j'ai eu des problèmes à chaque étape. Actuellement, j'ai quelque chose qui devrait fonctionner, mais j'obtiens une erreur:

Exception dans le thread "main" java.lang.IllegalArgumentException: nom de fichier attendu comme argument chez com.soleil.javafx.CSS.analyseur.Css2Bin.principal (Css2Bin.java: 44)

J'ai essentiellement copié cela de quelqu'un qui l'a fait fonctionner. Je voudrais dire que le FX lib est ajouté là où il devrait être. Je sais que ce n'est pas chic, mais j'essayais juste les bases.

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();
}}

J'ai également essayé de nombreux noms de chemin différents au cas où cela ne marcherait pas sans chance, j'ai également simplement essayé de copier et coller le nom de chemin que j'ai obtenu dans eclipse en allant dans properties ex: /b/src/hero.mp3. Help serait apprécié pour me sortir de ce cauchemar.

Author: Kasarrah, 2014-06-22

4 answers

Les fichiers situés en dehors de l'espace de travail doivent être inclus avec le préfixe file://. Un exemple simple démontrant la fonctionnalité est

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();
   }  
 }
 2
Author: ItachiUchiha, 2014-06-22 16:48:17

Je soupçonne que vous avez un problème avec le référencement des ressources intégrées. Une ressource intégrée est un fichier contenu dans le contexte de l'application (c'est-à-dire. Dans ce cas, stocké dans le pot d'application).

Pour obtenir une référence à ces ressources, vous devez utiliser Class#getResource, ce qui retourne URL, que vous pouvez ensuite utiliser pour charger la ressource en fonction de vos besoins, par exemple...

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);
    }

}

Maintenant, je ne pouvais pas le faire fonctionner avant d'avoir enveloppé dans un Application cadre...

 1
Author: MadProgrammer, 2014-06-22 03:09:28

Si le fichier est dans le resources/music cela fonctionne et l'application sera portable,.mp3 inside the .jar:

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

entrez la description de l'image ici

 0
Author: GOXR3PLUS, 2016-12-22 21:35:24

JavaFX INTÈGRE un MP3 dans le jar (dans le jar) avec NetBeans

J'ai programmé mon tout premier paquet JavaFX dans NetBeans, puis je voulais ajouter du son, un fichier de musique mp3, intégré dans le jar, à l'intérieur du jar, afin que je puisse envoyer le jar à mes amis et que la musique joue sur leurs ordinateurs. Merci StackOverflow pour votre aide. Merci surtout au membre qui a dit " mettez votre fichier musical DANS LE JAR, getResourceAsStream() est l'API que vous souhaitez utiliser."Il m'a mis sur la piste, bien que j'ai fini par utiliser getResource (). Elle fonctionne.

ÉTAPE 1: Tout d'abord, j'ai eu la musique à jouer quand j'ai frappé run dans NetBeans.

ÉTAPE 2: Je voulais que la musique boucle (répète). Finalement, j'ai eu raison, grâce aux membres de StackOverflow. Veuillez consulter mon code source.

ÉTAPE 3: Enfin, j'ai obtenu le mp3 à INTÉGRER dans le pot. Maintenant, c'est important. Au début, la musique a joué sur mon ordinateur, mais le pot l'a lu sur mon disque dur. Quand j'ai changé le nom du mp3, alors le pot s'est écrasé, il ne courrait pas, il n'a pas pu trouver le mp3. J'ai dû intégrer le mp3 dans le pot, le mettre à l'intérieur du pot (dans le pot) sinon il ne jouerait pas sur l'ordinateur de quelqu'un d'autre. C'est là que getResource() a fait l'affaire.

ÉTAPE 4: Ensuite, j'ai envoyé mon pot à des amis. Certains fournisseurs de services ne font pas confiance à un pot, ils m'ont renvoyé les e-mails, non livrés. D'autres fournisseurs de services n'ont pas de problème et ont livré les e-mails. Alors, qu'ai-je fait? J'ai changé le nom de l' *.pot à *. mp4 et les e-mails ont été livrés, j'ai demandé à mes amis de le changer de *.mp4 à *.pot. Il a travaillé.

Voici mon code source. Je suis sûr que ce n'est pas parfait, mais cela fonctionne, grâce à 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 *************************

J'ai mis le mp3 dans le dossier Windows src/rockymountain. Ensuite, NetBeans a automatiquement copié le mp3 dans le dossier build/classes/rockymountain. NetBeans ne copie pas le mp3 dans le dossier / ressources, un fichier que j'ai créé inutilement, parce que quelqu'un l'a dit. Le /dossier de ressources n'est pas nécessaire, il reste vide.

Créer un fichier Java ARchive (jar) en utilisant NetBeans comme suit:

  1. Faites un clic droit sur le nom du projet

  2. Sélectionnez Propriétés

  3. Cliquez Sur L'Emballage

  4. Vérifiez le JAR de construction après la compilation

  5. Vérifier Compresser le fichier JAR

  6. Cliquez sur OK pour accepter les modifications

  7. Faites un clic droit sur le nom du projet

  8. Sélectionnez Nettoyer et Construire

    Le fichier JAR est construit. Pour le voir dans NetBeans:

  9. Cliquez sur l'onglet Fichiers

  10. Développez ProjectName > > dist (distribution). Le fichier jar se trouve dans le dossier dist.

 0
Author: dirk, 2017-05-18 03:41:26