Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





direct show compresion

Iniciado por Jviruss, 23 de Mayo de 2011, 09:11:26 PM

« anterior - próximo »

Jviruss

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

jmcots

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,

yorch

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/







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.