Este post será corto de palabras pero como siempre con mucho código fuente para descargar, analizar y reutilizar xD!!
Un amigo de guatemala me hizo una consulta acerca de la transmisión de video y bueno, Dos horas antes de escribir este post me propuse darle una mano. La idea era transmitir video pero sin usar R.T.P. sino transmitiendo uno a uno los frames provenientes de una fuente de video, que en este caso es una cámara web.
Servidor
Cliente
Anteriormente posteé la forma de cómo acceder a los frames de video usando el Java Media Framework, si no lo has leído aún te recomiendo lo hagas http://rolandopalermo.blogspot.com/2010/06/procesamiento-de-video-en-tiempo-real.html y en este post vamos a transmitir esos frames capturados. No explicaré el código porque en internet hay bastante información así como ejemplos de cómo usar sockets en java.
Aquí les dejo el proyecto desarrollado usando Netbeans.
Saludos y espero te sea de utilidad!... No olvides dejar tu comentario que motiva el seguir compartiendo el conocimiento y las experiencias.










No se como agradecerte, era lo unico que me faltaba, y no tenia la mas remota idea de como hacerlo. Cualquier otra cosa te estare molestando. Muchisimas gracias.
ResponderEliminarRolando, estube probando pero no me funciona el transmisor de video, al ejecutarlo me salen 2 errores: Linea 58 y Linea 196. No se que sea.
ResponderEliminarEs cuestion de que configures tu java media framework. Ejecuta el JMStudio y busca configura tu cámara web o lee la documentación de JMF.
ResponderEliminarProbe un proyecto que solo captura una fotografia y si funciona la aplicacion, pero no funciona el Acceder2Frames.java. Ya vi el JMStudio pero no se que sea
ResponderEliminarProblema resuelto, tenia una IP fija, por estar probando el proyecto en red, lo restaure y funciona de maravilla. Que tendria que agregarle para eviar sonido. Agradezco tu ayuda.
ResponderEliminarVas a tener que agregarle mucho empeño y ganas de investigar. ^^
ResponderEliminarSaludos.
Ok, me has ayudado mucho y lo agradezco, me sacaste de un gran apuro. Te cuidas.
ResponderEliminarAmigos estoy tratando de mostrar el video capturado de la camara wep integrada de mi portatil en un frame, y que al hacer clicl muestre en otro frame la imagen o ofto de ese instante, par lograrlo intente poner a funcionar este programa pero me salen dos errores
ResponderEliminarat com.blogspot.rolandopalermo.sockets.Acceder2Frames.(Acceder2Frames.java:58)
at com.blogspot.rolandopalermo.sockets.Acceder2Frames.main(Acceder2Frames.java:196)
por favor si me puedes ayodar te lo agradeceria inmensamente.
Ya instalaste el JMF, si ya lo hiciste, tienes que configurar la camara en el panel del JMF, saludos.
ResponderEliminarhola buenas tardes rolando lei tu publicacion y quiero q m ayudes me pidieron q transmitiera el video de una webbcam en tiempo real asi como tu lo haces pero de ahi insertarlo a una pagina web para q se vea me podras ayudar dame tu correo o algo para contactarte en verdad me urge para un proyecto espero y me contestes pronto
ResponderEliminarmi correo es roberto860205@hotmail.com
ava.lang.ExceptionInInitializerError
ResponderEliminarCaused by: java.lang.RuntimeException: Uncompilable source code - package javax.media does not exist
at com.blogspot.rolandopalermo.sockets.Acceder2Frames.(Acceder2Frames.java:25)
Could not find the main class: com.blogspot.rolandopalermo.sockets.Acceder2Frames. Program will exit.
Exception in thread "main" Java Result: 1 me marca ese errror ayuda
Aprender a detectar el origen de una excepción es parte de aprender a programar en Java.
ResponderEliminarSaludos.
es que soy nuevo en esto por eso me atrevo a recurrir a tu ayuda y espero no te nolestes
ResponderEliminarLA APLICACIÓN ES UN MUY BUEN EJEMPLO... ME GUSTARÍA SABER COMO HACER PARA CAPTURAR EL SONIDO TAMBIÉN... GRACIAS
ResponderEliminarWenas está muy weno el programa, pero tengo un problema me tira un NullPointerException en la clase acceder2Frames y creo que es xq el dispositivo que esta escrito o al menos lo que se le envia en ese momento no existe esta es la linea dispositivo = CaptureDeviceManager.getDevice(source);, entonces investigué un poco y encontré el método CaptureDeviceManager.getDeviceList(); pero no me devuelve nada sabes si ese es el error o ando buscando el error por mal camino si puedes me respondes a zevox11@gmail.com
ResponderEliminarmuchas gracias me ayudo mucho!!!
ResponderEliminarGracias por el aporte.
ResponderEliminarSolo quiero mencionar a todas aquellas personas que apenas comienzan a emplear multimedia en java, que despues de instalar el JMF, ejecuten el archivo "jmfinit.exe" localizado en la carpeta bin del JMF. Lo que permitira reconocer los dispositivos, posteriormente abran la aplicacion "jmstudio.exe" localizada en la misma carpeta y en la opcion de File-Preferences-Capture devices, debe aparecer su camara algo como "vfw:Microsoft WDM Image...". En su momento si descargan alguna aplicacion y la ejecutan, les sugiero utilizar los JAR´s que se encuentran en la carpeta de lib. Ya que en muchos foros algunos compañeros tienen ese problema, pero si funciona con los JAR´s que se descargan con el proyecto, pues que mejor.
Oye Rolando primeramente te agradesco por tu aportacion, me ha ayudado de mucho, pero tengo un problema, al ejecutarlo me funciona bien, pero despues de unos 10 o 15 minutos la memoria del BufferedImage se desborda y me manda el siguiente mensaje:"java.lang.OutOfMemoryError" en la siguiente linea de codigo: "BufferedImage bufferedImage = (BufferedImage)buffer_image.createImage(buffer);"
ResponderEliminarYa intente vaciar la memoria del BufferedImage despues de usarla, pero me sigue dando el mismo error, ¿Tienes alguna idea para solucionar este error?.
hola muy agradecido por tu tuto
ResponderEliminarhola muchas gracias por tu tuto
ResponderEliminarquiciera saber com puedo hacer para mostar en el servidor varios clientes es decir si tengo 6 equipos mas un servidor como hago para que desde el servidor pueda ver los 6 equipos al mismo tiempo ????
Disculpa la pregunta, pero ¿Como ejecuto el cliente? al momento de compilarlo solamente aparece el servidor, soy muy nuevo en java y debido a que sigo sin poder usar el JMF para guardar video me pareció mejor idea transmitirlo como imagenes.
ResponderEliminarBien Hermano ya con esto me solucionado el proyecto final te agradesco mucho solo unos cuantos arreglos pero gracias hermano,saludos
ResponderEliminarhhoolllaa
ResponderEliminarsalu2 amigos muii bueno tu proyecto pero me salen erroes
ResponderEliminarimport javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.Processor;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
package javax.media doesnt exit como puedo solucionar este incoveniente..
http://www.oracle.com/technetwork/java/javase/download-142937.html
ResponderEliminarHola, soy nueva en esta página web.
ResponderEliminarTengo que hacer un proyecto muy parecido, tengo que transmitir vídeo (capturado del display de mi ordenador) con UDP.
He escrito algo de código, pero estoy intentando que el cliente pueda ver en el display la imagen. Para ello estaba leyendo tus posts. ¿Me puedes ayudar a adaptar tus consejos a mi proyecto? En ese caso te proporcionaré mi dirección de email.
Muchísimas gracias.
Hola amiga, a qué te refieres con display. Estoy seguro que podremos ayudarte con tu proyecto.
ResponderEliminarCon display me refiero al monitor de un PC. El proyecto se trata de con un frame grabber capturar la imagen del monitor, guardarla y transmitirla por multicast con UDP. He empezado a escribir el Cliente y el Servidor, y estoy intentando enviar una imagen .jpg al cliente pero no se como abrir un reproductor o ventana con la imagen que se está reciviendo. Si tienes tiempo, me gustaría enviarte por correo mi código (no es muy diferente a lo que se puede encontrar por internet). A ver si me puedes ayudar.
ResponderEliminarGracias
El código es casi el mismo que el que se ha publicado aquí amiga, solo tienes que cambiar la fuente que en tu caso sería un screenshot de tu pantalla, luego enviarlo a una dirección multicast. Saludos
ResponderEliminarDe acuerdo, lo provaré, muchas gracias.
ResponderEliminarHola amigo, me parece excelente el proyecto y me gustaría hacerle unas modificaciones para poder enviar un archivo de video que ya se encuentra en mi máquina. Cambié el MediaLocator para este fin pero no estoy seguro de como manipular los frames, ya que tal como está me saca errores (Failed to configure: com.sun.media.PlaybackEngine@1a643473).
ResponderEliminarTe agradecería mucho que pudieras colaborarme y nuevamente felicitaciones.