Aqui continuando con el segundo avance mostraremos informacion de softwares no terminados que detectan movimiento con un webcam y lenguaje java encontramos 2 sitios se los dejaremos marcados con la respectiva descarga del codigo fuente aqui:
sábado, 29 de octubre de 2011
Continuación de la segunda revisión
sábado, 22 de octubre de 2011
Avance proyecto (Segunda revisión)
Esta es el siguiente avance que tenemos referente a nuestro proyecto que es la reproducción un tipo de formato de audio los formatos que logramos reproducir son WAV OGG y aquí se muestra el código que utilizamos para la reproducción de un sonido WAV que es un platillo de batería todo código referente al audio es sacado es de este sitio código reproducción de audio y como al principio mostramos el main que llama la clase para la reproduccion de el audio "wav2.wav".
Codigo que se utilizo para la reproducción del audio
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
new AePlayWave("wav2.wav").start();
}
}
Esta es la clase que llamad en el main para la reproduccion
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
public class AePlayWave extends Thread {
private String filename;
private Position curPosition;
private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb
enum Position {
LEFT, RIGHT, NORMAL
};
public AePlayWave(String wavfile) {
filename = wavfile;
curPosition = Position.NORMAL;
}
public AePlayWave(String wavfile, Position p) {
filename = wavfile;
curPosition = p;
}
public void run() {
File soundFile = new File(filename);
if (!soundFile.exists()) {
System.err.println("Wave file not found: " + filename);
return;
}
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException e1) {
e1.printStackTrace();
return;
} catch (IOException e1) {
e1.printStackTrace();
return;
}
AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} catch (LineUnavailableException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
}
if (auline.isControlSupported(FloatControl.Type.PAN)) {
FloatControl pan = (FloatControl) auline
.getControl(FloatControl.Type.PAN);
if (curPosition == Position.RIGHT)
pan.setValue(1.0f);
else if (curPosition == Position.LEFT)
pan.setValue(-1.0f);
}
auline.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (IOException e) {
e.printStackTrace();
return;
} finally {
auline.drain();
auline.close();
}
}
}
miércoles, 5 de octubre de 2011
Avance del proyecto (Primera revision)
Informacion sobre JMF
Sobre JMF la informacion fue bastante escasa ya que manuales para el uso del framework no hay ademas de ser antiguo y tener pocas actualizaciones que lo hacen incompatible con algunos codecs en lo que es reproduccion de audio pero si hay foros en la que publican el uso que le dieron al framework orientado a la utilizacion de webcam y publican los codigos la pagina que fue abstante util fue jc-mouse(Captura de video con webcam) en la que utilizamos arios codigos para nuestro proyecto.
Codigos que se utilizaron para conectar la webcam
import java.util.logging.Logger;
import javax.media.*;
import javax.media.cdm.CaptureDeviceManager;
import java.io.*;
import java.awt.*;
import javax.swing.JOptionPane;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class jmfVideo {
//Controlador universal de windows
private String dispositivo = "vfw:Microsoft WDM Image Capture (Win32):0";
private Player player = null;
public Component Componente(){
Component componente_video;
try {
// Se obtiene el dispositivo
CaptureDeviceInfo device = CaptureDeviceManager.getDevice(dispositivo);
//se obtiene la fuente de datos de captura
MediaLocator localizador = device.getLocator();
//El localizador es del tipo "vfw://0" video para windows
//se crea el PLAYER y se ejecuta
player = Manager.createRealizedPlayer(localizador);
player.start();
} catch (IOException ex) {
Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoPlayerException ex) {
Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
} catch (CannotRealizeException ex) {
Logger.getLogger(jmfVideo.class.getName()).log(Level.SEVERE, null, ex);
}
//Si se pudo crear el PLAYER, se obtiene el componente de video
if ((componente_video = player.getVisualComponent()) != null) {
//se da un tamaño al componente
componente_video.setSize(320, 240);
return componente_video;
} else {
JOptionPane.showMessageDialog(null,"No se pudo crear el video...");
return null;
}
}
}
jmfVideo b = new jmfVideo();
/** Creates new form video */
public video() {
initComponents();
this.setTitle("WebCam - by Mouse");
//formulario al centro de la pantalla
this.setLocationRelativeTo(null);
//se da un tamaño al jFrame
this.setSize(320, 240);
//se coloca un layout tipo CAJA
getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
//se añade el componente de video
this.add( b.Componente());
}