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 :

Enregistrer l'entrée micro


Sujet :

Multimédia Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Enregistrer l'entrée micro
    Voici le topo : je voudrais enregistrer ce qui arrive par le micro (je suis sur un ordi portable, donc je parle du micro intégré)

    Voici le code :

    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
     
     
    // Appelée une seule fois lors de la création de l'objet
        public void init() {
     
            audioFormat = new AudioFormat(22050, 8, 1, true, true);
            DataLine.Info info = new DataLine.Info(TargetDataLine.class,
                    audioFormat);
     
            if (!AudioSystem.isLineSupported(info)) {
                return;
            }
     
            // On récupère le DataLine adéquat
            try {
                line = (TargetDataLine) AudioSystem.getLine(info);
            } catch (LineUnavailableException e) {
                e.printStackTrace();
                return;
            }
     
        }
     
        public void record() {
     
            // on ouvre le Dataline
            try {
                line.open(audioFormat);
            } catch (LineUnavailableException e1) {
                e1.printStackTrace();
                return;
            }
     
            // pour que le flux soit effectivement redirigé sur la carte son il
            // faut
            // demarrer la ligne
            line.start();
            AudioInputStream audioInputStream = new AudioInputStream(line);
     
            try {
                AudioSystem.write(audioInputStream, targetType, file);
            } catch (IOException e1) {
                e1.printStackTrace();
            } finally {
                line.close();
                try {
                    audioInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
     
            }
     
            line.stop();
            line.close();
     
        }
    Ce code, je l'ai copié d'un exemple trouvé sur Internet, mais je ne sais pas si j'utilise les bonnes classes notamment les TargetDataLine et DataLine.info
    Mais en fait, je n'enregistre rien du tout
    Est-ce que c'est adapté aux micros intégrés ou st-ce que je dois utiliser autre chose ?

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    En fait, je viens de m'apercevoir que ça n'enregistre que ce qui sort sur le haut parleur, mais c'est pas ce que je cherche mas faire l'équivalent du magnéto Windows, et là je sèche... HELP

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 117
    Points : 109
    Points
    109
    Par défaut
    Bah pourtant c'est bien documenté chez sun... Mais effectivement, toi tu prends le canal de sortie de ton systeme... voici la philosophie:

    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
     
     
    TargetDataLine line;
     
    if (AudioSystem.isLineSupported(Port.Info.MICROPHONE)) {
        try {
            line = (Port) AudioSystem.getLine(
                Port.Info.MICROPHONE);
        }
    }
     
    DataLine.Info info = new DataLine.Info(TargetDataLine.class, 
        format); // format is an AudioFormat object
    if (!AudioSystem.isLineSupported(info)) {
        // Handle the error.
        }
        // Obtain and open the line.
    try {
        line = (TargetDataLine) AudioSystem.getLine(info);
        line.open(format);
    } catch (LineUnavailableException ex) {
       // Handle the error.
        //... 
    }

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci de ton aide, mais en le lisant, j'ai peur que ça ne marchera pas :
    - tu initialises la variable line au début en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     line = AudioSystem.getLine(Port.Info.MICROPHONE)
    - et plus tard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    line = (TargetDataLine) AudioSystem.getLine(info);
    Je vais essayer de revoir la doc de chez sun

    Citation Envoyé par ypicman
    Bah pourtant c'est bien documenté chez sun... Mais effectivement, toi tu prends le canal de sortie de ton systeme... voici la philosophie:


    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
     
     
    TargetDataLine line;
     
    if (AudioSystem.isLineSupported(Port.Info.MICROPHONE)) {
        try {
            line = (Port) AudioSystem.getLine(
                Port.Info.MICROPHONE);
        }
    }
     
    DataLine.Info info = new DataLine.Info(TargetDataLine.class, 
        format); // format is an AudioFormat object
    if (!AudioSystem.isLineSupported(info)) {
        // Handle the error.
        }
        // Obtain and open the line.
    try {
        line = (TargetDataLine) AudioSystem.getLine(info);
        line.open(format);
    } catch (LineUnavailableException ex) {
       // Handle the error.
        //... 
    }

Discussions similaires

  1. Réponses: 16
    Dernier message: 16/05/2008, 17h39
  2. application boostant le niveau d'entrée micro
    Par ThE BiShOp* dans le forum Windows
    Réponses: 0
    Dernier message: 27/03/2008, 10h52
  3. Entrée micro de la carte son
    Par Jean-Michel RIVIERE dans le forum DirectX
    Réponses: 12
    Dernier message: 17/10/2007, 11h26
  4. Réponses: 3
    Dernier message: 11/07/2007, 12h44
  5. Obtenir des enregistrements compris entre 2 dates
    Par rangernoir dans le forum Access
    Réponses: 2
    Dernier message: 29/09/2005, 13h56

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