2009-09-24 16 views
7

Tenemos un dispositivo que tiene una cámara analógica. Tenemos una tarjeta que lo prueba y digitaliza. Todo esto se hace en directx. En este momento, reemplazar el hardware no es una opción, pero debemos codificar de manera tal que podamos ver este video en tiempo real independientemente de cualquier hardware o cambios subyacentes del sistema operativo que ocurran en el futuro.Implementar cámara IP

En esta línea, hemos elegido Qt para implementar una GUI para ver esta alimentación de cámara. Sin embargo, si en el futuro nos movemos a una plataforma Linux u otra plataforma integrada y cambiamos otro hardware (incluido el dispositivo físico donde vive la cámara/la muestra de video), tendremos que cambiar también el software de visualización de la cámara, y eso será un dolor porque tenemos que integrarlo en nuestra GUI.

Lo que propuse fue la migración a un modelo más abstracto en el que los datos se envían a través de un socket a la GUI y el video se muestra en vivo después de ser analizado desde la secuencia de socket.

En primer lugar, ¿es esta una buena idea o una mala idea?

En segundo lugar, ¿cómo implementaría tal cosa? ¿Cómo los samplers de video usualmente dan salida usable? ¿Cómo puedo presionar esta salida sobre un socket? Una vez que estoy en el extremo receptor analizando la salida, ¿cómo sé qué hacer con la salida (como en cómo hacer que se renderice la salida)? Lo único que se me ocurre es escribir cada muestra en un archivo y luego mostrar el contenido del archivo cada vez que llega una nueva muestra. Esto parece una solución ineficiente para mí, si funciona en absoluto.

¿Cómo me recomiendas yo manejo esto? ¿Hay alguna biblioteca multiplataforma disponible para tal cosa?

Gracias.

editar: estoy dispuesto a aceptar sugerencias de algo diferente en lugar de lo mencionado anteriormente.

Respuesta

2

Cualquier cosa que duplique la transmisión de video le costará en rendimiento, especialmente en un espacio incrustado. En la mayoría de las situaciones de video, creo que es mejor que intentes utilizar la aceleración de hardware local para enviar el video directamente a la pantalla. Con una adecuada encapsulación, debería poder usar Qt para la GUI que rodea el video, y tener una clase que sea específica de la plataforma que use para controlar el dibujo de video real en la pantalla (dónde dibujar, qué tan grande, etc.)

Editar:

También puede que desee ver en la biblioteca Phonon. No lo he visto mucho, pero parece ser compatible con mostrar videos que pueden ser adquiridos de diferentes fuentes.

+0

Entiendo de dónde viene con esto, pero esa aceleración de hardware local podría estar en un dispositivo diferente por completo, o podría estar en el mismo dispositivo. En este momento, desciende por USB a la pantalla. Si lanzamos la idea de enchufes, lo cual está bien, ¿sabe usted de alguna LGPL o bibliotecas patentadas multiplataforma que ayuden a lograr tal cosa en Qt? –

+0

Además, agregue un espacio o algo a su respuesta para que pueda +1. dice que el voto es demasiado viejo para cambiar. –

3

¿Has mirado QVision? Es un marco basado en Qt para gestionar el procesamiento de video y video. No necesita el procesamiento, pero creo que hará lo que quiera.

+0

parece interesante, gracias. –

Cuestiones relacionadas