IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

Pas de son joué


Sujet :

Multimédia Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Pas de son joué
    Bonsoir.

    Je programme (pour une activité avec des enfants) un programme qui lorsqu'on appuie sur une touche précise joue un son.
    (NDLR : je programme sur Eclispe)

    Voici le code :
    https://gist.github.com/stk3702/99b5...c471f4c7a8acf6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import javax.swing.ImageIcon;
    import java.applet.Applet;
    import java.applet.AudioClip;
    import java.net.URL;
    import java.io.File;
     
    class Buzzer extends Thread
    {
        private URL url;
        private AudioClip sound;
        private File f;
     
        public Buzzer()
        {
            f=new File("f.wav");
            if(f.exists()) {
            	System.out.println("pouet");
            }
    	    try
    	    {
    	        url = f.toURI().toURL();
    	        sound = Applet.newAudioClip(url);
    	        System.out.println("sound");
    	      } catch (Exception e) {
    	        System.out.println(e);
    	      }
        }
     
        public void jouer()
        {
        	System.out.println("in");
            sound.play();
            System.out.println("out");
        }
    }
     
    class FenetreQuizz extends JFrame implements KeyListener{
    	JLabel label;
    	JPanel panel;
    	JDialog dg;
    	Buzzer bz;
    	String ficelle;
    	public FenetreQuizz () {
    		super();
    		ficelle="";
    		bz=new Buzzer();
    		setTitle("Quizz");
    		setSize(200,200);
    		setExtendedState(JFrame.MAXIMIZED_BOTH);
    		panel=new JPanel();
    		label=new JLabel();
    		panel.add(label);
    		setContentPane(panel);
    		setVisible(true);
    		addKeyListener(this);
    	}
     
    	@Override
    	public void keyPressed(KeyEvent e) {
    		if(e.getKeyCode()==KeyEvent.VK_A) {
    			ficelle=ficelle+"1";
    			bz.jouer();
    		}
    	}
    	@Override
    	public void keyTyped(KeyEvent e) {}
     
    	@Override
    	public void keyReleased(KeyEvent e) {}
    }
     
    public class Quizz{
    	public Quizz() {}
     
    	public static void main(String [] args) {
    		FenetreQuizz fq=new FenetreQuizz();
    		fq.setVisible(true);
    	}
    }
    C'est censé jouer un son quand on appuie sur 'A' mais ça ne fonctionne pas et pourtant tout a l'air correct (détection du fichier, entrée et sortie des appels de jouer(), ... ).

    Auriez-vous une idée s'il vous plaît ?

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Sous JDK 16, aucun soucis pour moi. Es-tu sur que bien appuyer sur la touche A pour que ta méthode jouer() soit invoquée.

    Et j'en profite pour rappeler que toute l'API Applet est en voie d'extinction dans les futures version.
    il est possible de remplacer le code qui fait la lecture par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        private URL url;
        private Clip clip;
        private final File f;
     
        public Buzzer2() {
            f = new File("f.wav");
            if (f.exists()) {
                System.out.println("pouet");
            }
            try {
                final var audioInputStream = AudioSystem.getAudioInputStream(f.getAbsoluteFile());
                clip = AudioSystem.getClip();
                clip.open(audioInputStream);
            } catch (IOException | LineUnavailableException | UnsupportedAudioFileException ex) {
                System.out.println(ex);
            }
        }
     
        public void jouer() {
            System.out.println("in");
            Optional.ofNullable(clip)
                    .ifPresent(c -> c.loop(1));
            System.out.println("out");
        }

    Un défaut de conception dans ton code : Buzz est un Thread mais a aucun moment tu l'utilises en tant que tel.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Bonsoir.

    Oui je suis certain que j'ai bien appuyé sur A (je ne l'ai pas mis car cette partie ne bugge pas mais le programme affiche aussi la lettre sur laquelle on appuie)

    Je vais essayer ce bout de code et je reviens vers vous.

    Un défaut de conception dans ton code : Buzz est un Thread mais a aucun moment tu l'utilises en tant que tel.
    Ah bon ? C'est grave ?

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    En l’état non car tu en utilises qu'une seule instance et qu'en plus ni Clip.loop() ni AudioClip.play() ne sont des méthodes bloquantes (c'est a dire qu'elles retournent immédiatement et que le le son se joue sans bloquer toute ton interface graphique). C'est juste que ta classe hérite de tout un baguage de sa classe mère... qui lui sert strictement a rien en l’état (donc sur-consommation mémoire, potentielles ressources natives, etc.). Mais bon ici rien de bien critique.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Alors j'ai voulu tester votre solution cependant j'ai un aussi avec le "final var". Eclipse me met une erreur (var cannot be resolved to a type) mais je ne sais pas comment la régler.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Alors Eclipse m'a indiqué que je devais passer à Java 10 pour pouvoir utiliser var mais du coup ça m'a ajouté 8724522 erreurs partout.

    J'ai essayé d'esquiver le problème en écrivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                clip.open(AudioSystem.getAudioInputStream(f.getAbsoluteFile()));
    Mais ça me met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Si tu restes en JDK 9 dans ce cas tu peux continuer a utiliser Applet et AudoClip.

    L'exception indique bien que le format du son n'est pas supporte (et du coup cela explique peut-être pourquoi tu n'entends aucun son quand tu utilises AudoClip). Pour rappel le WAV n'est pas un format sonore mais un format de conteneur. Le son peut être encode de diverses manière et tous les formats ne sont pas supportes par Java Sound. Tu peux généralement avoir des détails des formats ou codec utilises en regardant les détails du fichier WAV dans l'explorateur Windows ou dans certains logiciels de lecture ou de manipulation du son.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Re-bonjour j'ai bien pris connaissance de tout ça ... mais là après regardé et lu, j'avoue ne pas avoir compris le problème que j'ai
    Par ailleurs, je ne vois pas de différence entre ce qu'ils proposent sur le lien et mon programme (enfin si une différence : eux c'est un url donc en ligne et moi directement sur mon disque)

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Le soucis peut venir du fait que le format d'encodage de ton son n'est peut-être pas supporté par Java Sound. Et dans ce cas il ne s'agit donc pas d'un soucis avec ton code. Est-ce un son que tu as toi-même généré ou que tu l'as récupéré d'une source tierce ? Est-il librement accessible pour que je puisse tester cela ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Il s'agit de cette vidéo :

    Je l'ai téléchargé via le site https://mp3-youtube.download/fr/audio-better-converter

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Bon alors déjà c'est pas du WAV mais du MP3 et ensuite le soucis se pose à l'identique puisque MP3 est un conteneur (au format MPEG-1) et qu'ensuite il y a un encodeur derrière qui n'est peut-être pas supporté par Java Sound.
    Et ensuite vu que le convertisseur demande d'accepter les notifs de son site je vais pas télécharger le fichier... Tu peux obtenir des détails supplémentaires sur ton fichier MP3 en regardant les propriété du fichier dans via le bouton de droite et en allant dans l'onglet détails et certains logiciels de lecture ou de manipulation de son seront capable de te dire quel encodeur a été utilisé.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Je sais ce que n'est pas un wav ... j'en avais fait un copie puis converti de MP3 vers WAV

    J'ai regardé sur VLC y'a aucune info sur les codecs.

  13. #13
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Bouton de droite -> tools -> Media info ou Bouton de droite -> tools -> CODEC information

    Nom : Untitled.jpg
Affichages : 74
Taille : 47,7 Ko
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  14. #14
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Bah oui c'est là que j'avais regardé

Discussions similaires

  1. [PB ODBC] Ce serveur n'existe pas ou son accès est refusé
    Par meufeu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/12/2015, 18h02
  2. ShellExecute qui veut pas faire son boulot...
    Par giloutho dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 31/08/2005, 11h49
  3. [J2ME]pas de son
    Par Arkan dans le forum Java ME
    Réponses: 2
    Dernier message: 04/04/2005, 15h32
  4. Réponses: 8
    Dernier message: 20/12/2004, 17h42
  5. [FLASH MX] Son joué au survol d'un bouton !
    Par ExSter dans le forum Flash
    Réponses: 8
    Dernier message: 17/12/2004, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo