Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Jviruss en 23 de Mayo de 2011, 09:11:26 PM

Título: direct show compresion
Publicado por: Jviruss en 23 de Mayo de 2011, 09:11:26 PM
Hola,estoy escribiendo una aplicacion que toma una captura de pantalla de un juego,tambien el audio( 2filtros source),lo multiplexa con un filtro de trsnsformacion,y lo manda a un filtro de render que se encarga de enviar el video por udp multicast.por otro lado tenemos un filtro source que recibe el trozo de video,lo demultipleza,separando el audio y el video y lo manda a dos filtros de render.

El problema viene cuando veo que un frame de envio,ocupa 6megas,mi paquete de udp pesa 45kb,con lo cual tengo que enviar unos 120 paketes.es normal que con estos envios y en localhost se pierdan tantos paquetes???komo podria solucionar la perdida???

Tambien querria comprimir,pero no encuentro info de como usar un compresor y un decompresor.y como se que major type y subtype acepta.alguien puede ayudar???
Gracias
Título: Re: direct show compresion
Publicado por: jmcots en 31 de Mayo de 2011, 10:47:21 AM
Hola Jviruss,

Sobre el tema del UDP no te puedo ayudar ya que a penas lo he tocado.  Solo puedo decirte que hay librerías, como eNet, que hacen una mezcla entre UDP y TCP que quizá te sirva para mantener la velocidad de UDP pero no perder paquetes por el camino.

Sobre el tema de la compresión, te recomiendo que envíes los datos comprimidos, por poco que sea vas a ganar.
Una idea es usar la librería zlib, más que conocida y con una api muy simple. Otra idea sería usar la libreria jpeg y enviar las imágenes con compresión con pérdida. Bueno y otra idea sería ya utilizar algún códec de vídeo cómo Theora para simular una especie de streaming de vídeo. Supongo que eso sería lo mejor en temas de compresión.

En cualquier caso, si lo que buscas es compresión sin pérdida, una buena idea es mandar los datos de forma diferencial, es decir cada X frames, mandar el frame completo, pero el resto de frames, mandas la diferencia con el frame anterior (pixel a pixel). De esta forma, las imágenes con poco movimiento se van a poder comprimir muchísimo mejor sin que exista pérdida alguna.

Saludos,
Título: Re: direct show compresion
Publicado por: yorch en 31 de Mayo de 2011, 09:14:02 PM
Miraros Gstreamer, quizás os vale y os puede resolver de una forma más sencilla la arquitectura de vuestra pipeline:

http://gstreamer.freedesktop.org/features/