marzo 18, 2025

Nuevos cargadores de Images y Videos en tiempo de ejecución

A principios del año pasado, Evergine presentó un concepto innovador mediante sus bibliotecas Evergine.Runtimes, diseñadas meticulosamente para mejorar la flexibilidad, eficiencia y dinamismo en los procesos de carga de recursos. Estas bibliotecas facilitan la carga de recursos desde repositorios locales desde el Content o su descarga dinámica desde internet, permitiendo a los desarrolladores integrar contenido dinámico de manera sencilla en sus aplicaciones.

La versión inicial incluyó:

  • Evergine.Runtimes.GLB
  • Evergine.Runtimes.STL

Ambas bibliotecas están especializadas para la carga en tiempo de ejecución de modelos 3D en formatos GLB y STL.

En esta última versión, Evergine ha ampliado sus capacidades mediante la introducción de dos paquetes NuGet adicionales:

  • Evergine.Runtimes.Images
  • Evergine.Runtimes.Videos

Evergine.Runtimes.Images

Anteriormente, Evergine utilizaba la biblioteca ImageSharp para la carga de imágenes y la creación de texturas. Tras una extensa interacción con clientes del sector y un análisis detallado de sus comentarios, se decidió migrar los procesos de carga de imágenes hacia la biblioteca SkiaSharp que ofrece mejor rendimiento.

SkiaSharp es una API gráfica 2D multiplataforma y de alto rendimiento, construida sobre la biblioteca gráfica Skia de Google. SkiaSharp proporciona un amplio soporte para diversos formatos de imagen, aceleración por hardware y capacidades optimizadas para el procesamiento de imágenes en múltiples plataformas, asegurando así una calidad de renderizado consistente y eficiencia en el rendimiento.

Esta migración estratégica hacia SkiaSharp ha generado notables mejoras de rendimiento, alcanzando incrementos en eficiencia de hasta un 98% en algunas plataformas.

La biblioteca Evergine.Runtimes.Images ahora facilita la carga rápida de texturas en tiempo real en una variedad de formatos, incluyendo BMP, JPEG, JPG, PNG y WEBP. A diferencia de implementaciones anteriores, que requerían asset del Content  de Evergine, la nueva biblioteca permite crear texturas dinámicamente y directamente a partir de imágenes obtenidas mediante descarga desde internet, almacenamiento en la nube o archivos subidos por usuarios. Este avance amplía significativamente las posibilidades en el desarrollo de aplicaciones.

Integrar la biblioteca Evergine.Runtimes.Images en tu proyecto es sencillo, solo tienes que incluir el paquete NuGet correspondiente y seguir el siguiente ejemplo de implementación proporcionado:

Para más detalles técnicos, consulta la documentación oficial de Evergine.

Evergine.Runtimes.Videos

Paralelamente a las mejoras en imágenes, esta versión presenta la biblioteca Evergine.Runtimes.Videos, diseñada para simplificar y unificar la compleja tarea de cargar y reproducir vídeos en tiempo real en múltiples plataformas. El renderizado de vídeo en tiempo real presenta desafíos significativos debido a las variaciones en mecanismos y APIs específicos de cada plataforma. Tras una exhaustiva investigación, el equipo de Evergine seleccionó FFmpeg como la biblioteca multiplataforma óptima para estandarizar la carga y reproducción de vídeos.

FFmpeg es un framework multimedia líder en la industria, capaz de decodificar, codificar, transcodificar, multiplexar, desmultiplexar, transmitir, filtrar y reproducir prácticamente cualquier formato multimedia. Reconocido por su eficiencia y versatilidad, FFmpeg proporciona un rendimiento robusto y optimizado en diferentes entornos de hardware y software.

Construida sobre FFmpeg, la nueva biblioteca Evergine.Runtimes.Videos ha sido probada rigurosamente con formatos de vídeo comunes como MP4 (H.264), WMV, MOV y FLV. Además, esta biblioteca soporta decodificación tanto basada en CPU como acelerada por GPU, reduciendo drásticamente el tiempo de decodificación y permitiendo la reproducción simultánea de múltiples vídeos en alta resolución sin pérdida de rendimiento.

La siguiente ilustración muestra la biblioteca de vídeo de Evergine funcionando en una plataforma Windows configurada con decodificación acelerada por GPU mediante el estándar DXVA2:

Nota: El ejemplo de vídeo ha sido proporcionado por Sora de OpenAI.

Aunque en esta versión el soporte de vídeo está actualmente limitado a sistemas Windows con arquitectura x64, el equipo de desarrollo de Evergine está trabajando activamente para extender esta funcionalidad a otras plataformas en futuras actualizaciones.

Para integrar esta nueva y potente biblioteca en tu proyecto, añade el paquete NuGet Evergine.Runtimes.Videos y utiliza el nuevo componente VideoPlayer disponible en Evergine Studio.

Nota: Componente VideoPlayer en Evergine Studio.

Para documentación técnica detallada e información sobre su implementación, por favor consulta la documentación oficial de Evergine.

El equipo de Evergine mantiene su compromiso con la mejora continua y la expansión de las bibliotecas Runtimes, simplificando así el proceso de carga dinámica de recursos para los desarrolladores.

Jorge Canton
Author
Jorge Cantón
Plain Concepts Research

¿Ya te vas?

Suscríbete a nuestra newsletter para estar al día de las últimas noticias, casos de éxito y mucho más. 

No mandamos spam y puedes darte de baja en cualquier momento.