2009-12-01 18 views
6

Voy a crear una aplicación en C++ que crea una secuencia de fotos y luego las envía como transmisión de video a otra aplicación. alguna idea sobre cómo puedo comenzar? lo que quiero decir es, ¿qué bibliotecas debo usar y cuál es la codificación? Estoy pensando en MJPEG y UDP o RTP como protocolo ... cualquier ayuda sería muy apreciada.Transmisión de video usando C++

Respuesta

5

Si sus datos de entrada son solo un montón de imágenes aleatorias, no de video, no va a hacer "transmisión de video". Solo vas a enviar un montón de imágenes completas. No es necesario involucrar tecnología de codificación de video, solo realice la transmisión de imágenes más simple posible. Los codificadores de video dependen de que cada cuadro tenga varias relaciones con el anterior, como es común en el video real. Para las entradas de imágenes aleatorias, no van a poder comprimir tanto, y la compresión de un solo cuadro (por ejemplo, JPEG/PNG/lo que sea) es muy probable que ya se aplique a sus datos de entrada.

Probablemente sea más fácil enviar el contenido de cada archivo, junto con el nombre de archivo original, y haga que el cliente receptor vuelva a crear el archivo en disco y use las bibliotecas existentes orientadas a disco para abrir y decodificar la imagen.

Probablemente debería utilizar TCP para esto, nada en sus requisitos que indique que necesita utilizar las soluciones basadas en UDP/RTP más complicadas y propensas a errores.

+2

La excepción es "Motion JPEG" (MJPEG) que en realidad es solo una secuencia de cuadros comprimidos JPEG con un pequeño encabezado en cada uno. Mi cámara digital Canon capturó videos en este formato. –

+0

La diferencia entre el grupo de imágenes y la transmisión de video (excepto por el tipo de compresión) es que en la transmisión de video tiene sincronización de tiempo. –

0

Usa la biblioteca ffmpeg para codificar tu transmisión y usa la pila RTP/RTSP para transmitirlos.

5

Para la parte de transmisión puede usar Live555. Debe cubrir todo lo que necesita. Eso todavía deja el problema de generar un MJpeg Stream. Solo puedo adivinar aquí, FFMpeg podría ser lo que estás buscando (como veo, también cubre la transmisión, por lo que es posible que solo necesites esta). Creo que MJpeg es muy adecuado para su aplicación. En cuanto al TCP o UDP, eso depende de cómo quieras usarlo. UDP tiene sentido si quiere hacer que su transmisión sea Multicast; de lo contrario, preferiría TCP porque es más confiable.

Espero que sean algunos consejos útiles.

Cuestiones relacionadas