Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

Archivo del blog

miércoles, 3 de marzo de 2010

Grabación de sonido desde el micrófono.

Este código graba audio desde micrófono durante 10 segundos y lo guarda en un archivo de audio llamado "grabacion.wav".


Código Java (GrabarSonido.java):

package grabarsonido;

import java.io.File;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.TargetDataLine;

public class GrabarSonido {

    AudioFileFormat.Type aFF_T = AudioFileFormat.Type.WAVE;
    AudioFormat aF = new AudioFormat(8000.0F, 16, 1, true, false);
    TargetDataLine tD;
    File f = new File("grabacion.wav");

    public GrabarSonido() {
        try {
            DataLine.Info dLI = new DataLine.Info(TargetDataLine.class, aF);
            tD = (TargetDataLine) AudioSystem.getLine(dLI);
            new CapThread().start();
            System.out.println("Grabando durante 10s...");
            Thread.sleep(10000);
            tD.close();
        } catch (Exception e) { }
    }

    class CapThread extends Thread {
        @Override
        public void run() {
            try {
                tD.open(aF);
                tD.start();
                AudioSystem.write(new AudioInputStream(tD), aFF_T, f);
            } catch (Exception e) { }
        }
    }

    public static void main(String[] args) {
        new GrabarSonido();
    }

}


Resultado:

run:
Grabando durante 10s...
BUILD SUCCESSFUL (total time: 0 seconds)

13 comentarios:

  1. Excelente muchas gracias !!

    ResponderEliminar
  2. Maravilloso, lo tome prestado para un proyecto, muchisimas gracias!!! =D

    ResponderEliminar
  3. Excelente codigo muchas gracias..!!!

    ResponderEliminar
  4. muchas gracias, pero como lo reproduzco? si necesito enviarlo por un socket como envio los bits del targetDataLine?

    ResponderEliminar
  5. Estubo bien! pero le hicieron falta ovnis!!!...

    ResponderEliminar
  6. Muchas Gracias, muy util

    ResponderEliminar
  7. como puedo modificarlo para hacerlo web
    es decir en jsp?

    ResponderEliminar
  8. saludos quisiera saber por que a mi no me funciona
    ava.lang.IllegalArgumentException: No line matching interface TargetDataLine supporting format PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at audio.Main.(Main.java:28)
    at audio.Main.main(Main.java:52)

    ResponderEliminar
  9. Excelente, pero sabes como escoger el micrófono de nuestra preferencia?

    ResponderEliminar
  10. Yo quiero guardar un audio mucho ya me rebusque y no encuentro. Como guardo un MP3 de una carpeta a otra carpeta.

    ResponderEliminar
  11. Con que tipo de micrófono lo grabaste? sera con micrófono condensador, Saludos

    ResponderEliminar

Con la tecnología de Blogger.