2009-01-07 16 views
10

Estoy escribiendo una aplicación de cliente Java para recibir video M-JPEG en vivo desde una cámara IP. El video es enviado por la cámara como un mensaje interminable HTTP de múltiples partes donde cada parte es un solo cuadro JPEG. Necesito procesar cada uno de estos fotogramas a medida que llegan, así que espero que haya una forma de hacer una solicitud HTTP que active de forma asíncrona un evento a medida que se recibe cada parte del mensaje/fotograma de video.Java: recibir una respuesta HTTP de varias partes

¿Alguien conoce alguna biblioteca que pueda hacer esto? Todos los ejemplos que puedo encontrar en Google no funcionarán porque usan llamadas de bloqueo que solo analizan la respuesta y la dividen en partes una vez que la respuesta completa ha terminado de recibirse (lo que obviamente no funcionará para una respuesta infinita).

Me di cuenta de que podía dividir manualmente los datos en partes cuando llega buscando el límite del mensaje, pero parece como si estuviera reinventando la rueda.

Respuesta

1

Pruebe HttpClient de Apache Commons. El código fuente tiene un par de clases que muestran cómo leer en varias partes en forma de flujo.

+0

Miré la documentación de esta biblioteca y parece que es solo para analizar solicitudes HTTP de varias partes, no respuestas. Según este hilo, no se puede usar para analizar respuestas de varias partes: http://markmail.org/message/l6t46xzmikkbxo2e. Estoy viendo Mime4j que mencionan en el enlace. – user52386

4
+0

Gracias- Cambozola parece ser exactamente lo que estoy tratando de hacer, miraré un poco más su código. Esperaba usar una biblioteca HTTP adecuada en lugar de un código personalizado, ya que todo es HTTP estándar, pero parece que no hay mucho disponible para lo que quiero hacer. – user52386

+0

Parece que la inserción HTTP solo se usa en webcams y algunos experimentos. El código tampoco es tan complicado. Solo diría que se asegure de que las fallas de conexión se manejen correctamente y no asuma que toda la información llegará correctamente. Cualquier API del navegador debe manejar eso correctamente también. – Loki

0

He escrito clases que procesan solicitudes multiparte para mi proyecto Sceye-Fi, un servidor HTTP que usa las clases com.sun.net.httpserver que vienen con java 6, para recibir cargas de fotos de una tarjeta Eye-Fi. En teoría, nada debería impedir que funcione en una solicitud interminable de partes múltiples. Espero que ayude.

Cuestiones relacionadas