viernes, 2 de mayo de 2008

Grabar video en J2ME

Snippet para grabar video en J2ME:

public void grabarVideo(){
//se inicializa un player
Player player = Manager.createPlayer("capture://video");
player.realize();

//se obtiene el control del video del player
VideoControl videoControl =
(VideoControl)(player.getControl("VideoControl"));
videoControl.initDisplayMode(
VideoControl.USE_DIRECT_VIDEO, this);
videoControl.setDisplayFullScreen(true);
videoControl.setVisible(true);
player.start(); //comienza la grabación

/* Se obtiene el control de grabación y se graba
por 10 segundos Los resultados son guardados en
un array de Bytes, pude guardarse también
en un archivo
*/
ByteArrayOutputStream output = new ByteArrayOutputStream();

RecordControl recordControl =
(RecordControl)(player.getControl("RecordControl"));
recordControl.setRecordStream(output);
recordControl.startRecord();
try {
Thread.sleep(10000);//graba durante 10 segundos
} catch (InterruptedException ex) {
//manejo de la excepción
}
try {
//se llama al commit para finalizar la grabación
recordControl.commit();
output.flush(); //flush de los datos dentro del buffer
} catch (IOException ex) {
//manejo de la excepción
}
//se cargan los bytes en el array video
byte[] video = output.toByteArray();
}
El problema con la grabación de video (y audio también) en J2ME es que hay que parar la grabación para poder obtener los datos de la misma. O sea, hasta no llamar al método commit(), no se cargan los bytes en el buffer, pero a su vez, éste método llama implícitamente al método stopRecording() por lo que la grabación se ve interrumpida.

1 comentario:

Unknown dijo...

hola estoy tratando de grabar un video me ayudas
nitajc1@hotmail.com