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

Entrée/Sortie Java Discussion :

ByteArrayInputStream et Clip


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut ByteArrayInputStream et Clip
    Bonjour,

    Voici le code que je tente de créer pour charger un fichier wav, transformer ses données dans un tableau byte[] (pour traiter ses valeurs plus tard) et faire jouer le morceau.

    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.URL;
     
    import javax.sound.sampled.*;
     
    public class Capture extends JFrame {
     
      AudioFormat format;
      AudioInputStream ais;
      DataLine.Info info;
      byte[] buffer;
      ByteArrayOutputStream baos;
      Clip klip;
     
      public Capture() {
        super("Sound Demo");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container content = getContentPane();
     
        final JButton capture = new JButton("Load wave");
        final JButton play = new JButton("Play");
     
        ActionListener captureListener = 
            new ActionListener() {
          public void actionPerformed(ActionEvent e) {
             try {
                captureAudio(new URL("http://pscode.org/media/leftright.wav"));
            } catch (UnsupportedAudioFileException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
          }
        };
        capture.addActionListener(captureListener);
        content.add(capture, BorderLayout.NORTH);
     
        ActionListener playListener = 
            new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            playAudio();
          }
        };
        play.addActionListener(playListener);
        content.add(play, BorderLayout.SOUTH);
      }
     
      private void captureAudio(URL fichier) throws UnsupportedAudioFileException, IOException {
        try {
          ais = AudioSystem.getAudioInputStream(fichier);
          format = ais.getFormat();
          ais = AudioSystem.getAudioInputStream(format, ais);
          baos = new ByteArrayOutputStream();
         int bufferSize = 2^32;
         buffer = new byte[bufferSize];
         int iCount = 0;
         int iTotal = 0;
     
         iCount = ais.read(buffer, 0, buffer.length);
         while (iCount>0) {
             baos.write(buffer, 0, iCount);
             iTotal += iCount;
             System.out.println("read " + iCount + " \ttotal " + iTotal );
             iCount = ais.read(buffer, 0, buffer.length);
        }
        ais.close();
         } catch (Exception e) {
          e.printStackTrace();
          System.exit(-2);
        }
      }
     
      private void playAudio(){
    	  InputStream byteArrayInputStream = new ByteArrayInputStream(buffer);
    	  AudioInputStream ais2 = new AudioInputStream(byteArrayInputStream, 
    			  					format, buffer.length/format.getFrameSize());
    	  DataLine.Info dataLineInfo = new DataLine.Info( Clip.class, format);
    	  Clip klip = null;
    	try {
    		klip = (Clip)AudioSystem.getLine(dataLineInfo);
    		klip.open(ais2);
    	} catch (LineUnavailableException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	  klip.start();
     
      }
     
      public static void main(String args[]) {    
        JFrame frame = new Capture();
        frame.pack();
        frame.setVisible(true);
      }
    }
    La partie pour transformer les données fichier dans le tableau byte[] semble fonctionner (quoique je ne suis plus sûr de rien!).
    Mais lorsque je clique sur le bouton "Play", seul un son d'un centième de secondes se produit et plus rien ensuite.

    Selon vous, d'où peut provenir le problème ?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    Je ne sais pas si tu as vérifié, mais peut-être un problème de mémoire de la JVM ?

    java -Xms32mb -Xmx256mb

Discussions similaires

  1. [FLASH MX] Scrollbar associée à un movie-clip
    Par dens63 dans le forum Flash
    Réponses: 19
    Dernier message: 05/06/2006, 11h41
  2. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  3. Pb d'action sur un clip
    Par bencasp dans le forum Flash
    Réponses: 4
    Dernier message: 22/10/2003, 17h11
  4. Clipping et projection orthogonale
    Par Luke-77 dans le forum DirectX
    Réponses: 4
    Dernier message: 01/10/2003, 20h02
  5. Chemin d'accès au clip et scenario en flash
    Par Gential dans le forum Flash
    Réponses: 4
    Dernier message: 28/02/2003, 10h10

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