Pregunta

Tenemos un dispositivo que tiene una cámara analógica. Tenemos una tarjeta que muestrea y digitaliza. Todo esto se hace en DirectX. En este punto en el tiempo, en sustitución de hardware no es una opción, pero hay que codificar de forma que podemos ver este canal de video en tiempo real independientemente de los cambios de hardware o del sistema operativo subyacente ocurrir en el futuro.

A lo largo de esta línea, hemos elegido Qt para implementar una interfaz gráfica de usuario para ver esta alimentación de la cámara. Sin embargo, si nos movemos a un Linux u otra plataforma embebida en el futuro y cambiar el otro hardware (incluyendo el dispositivo físico donde vive la cámara / muestreador de vídeo), tendremos que cambiar el software de visualización de la cámara, así, y que va a ser un dolor, porque tenemos que integrarlo en nuestra interfaz gráfica de usuario.

Lo que proponía era migrar a un modelo más abstracto donde los datos se envían a través de un socket para la interfaz gráfica de usuario y el vídeo se muestra en vivo después de ser analizada desde la corriente de tubo.

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

En segundo lugar, ¿cómo poner en práctica tal cosa? ¿Cómo los muestreadores de vídeo suelen dar salida útil? ¿Cómo se puede empujar me 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 la forma de obtener la salida de render)? Lo único que se me ocurre sería escribir cada muestra a un archivo y luego para mostrar el contenido del archivo cada vez que llega una nueva muestra. Esto parece como una solución ineficiente para mí, si funcionaría en absoluto.

¿Cómo me recomienda manejar esto? ¿Hay bibliotecas multiplataforma disponible para tal cosa?

Gracias.

editar: Estoy dispuesto a aceptar sugerencias de algo diferente en lugar de los mencionados anteriormente

.
¿Fue útil?

Solución

Todo lo que duplica la corriente video va a traer consecuencias en el rendimiento, especialmente en un espacio incrustado. En la mayoría de situaciones de vídeo, creo que es mejor tratar de utilizar la aceleración de hardware local para arruinar el video directamente a la pantalla. Con un poco de encapsulación adecuada, que debe ser capaz de usar Qt para la interfaz gráfica de usuario que rodea el vídeo, y tienen una clase que es específica de la plataforma que se utiliza para controlar el vídeo real dibujar en la pantalla (donde dibujar, y lo grande, etc. ).

Editar

También puede que desee ver en la biblioteca Phonon. No he mirado mucho, pero parece apoyar mostrar imágenes de vídeo que pueden ser adquiridos a partir de una variedad de fuentes diferentes.

Otros consejos

¿Ha mirado QVision ? Es un marco basado en Qt para la gestión de procesamiento de vídeo y vídeo. No es necesario el procesamiento, pero yo creo que va a hacer lo que quiera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top