Renderizar una secuencia de imágenes en C # para hacer un video

votos
1

Tengo una secuencia de imágenes jpg que estoy capturando y renderizando en la pantalla para crear un video.

Estoy descomprimiendo la imagen de un MemoryStream utilizando un JpegBitmapDecoder y renderizándolo estableciendo el Source en un control Image. Esto parece funcionar bien, pero la sobrecarga del procesador es bastante alta. Las imágenes son 1280x720, funcionan a 30 fps y apenas puedo mantener el ritmo en mi computadora (Dual Core 2.8Ghz). Correr a resoluciones más altas hace que tire marcos. Me gustaría intentar bajar la utilización de la CPU.

La mayor parte del tiempo gastado parece estar en la decodificación (los puntos de referencia simples de la decodificación solo en mi máquina muestran que puedo decodificar unos 40 fps). ¿Alguien sabe si hay un decodificador más rápido disponible (DirectX? DirectShow? Algo que puedo descargar a la tarjeta de video?)

En cuanto a la representación, no parece que el control de imagen esté diseñado para este tipo de uso (de hecho, me sorprendió que funcionara, solo lo probé porque era fácil de hacer). ¿Hay alguna otra forma de renderizar los marcos individuales que podrían ser más rápidos?

Publicado el 11/07/2009 a las 05:24
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Parece que ambos están decodificando y redimensionando el jpeg al mismo tiempo. El cambio de tamaño también puede ser costoso. Intente separar decodificación y redimensionamiento (usando el algoritmo más barato disponible) los jpegs. Utilice algo como FreeImage con "JPEG_FAST" para descomprimir y "FILTER_BOX" para cambiar el tamaño.

Para visualizar, TinyPTC es simple y rápido. (una envoltura alrededor de DirectDraw) Es C, pero es bastante fácil escribir un contenedor y compilarlo en un dll al que puede hacer referencia.

Respondida el 11/07/2009 a las 15:38
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more