Creación de prototipos de una aplicación Windows .NET que necesita reproducir video WMV y H264 de alta definición. Mis archivos de prueba están llenos 1080p.Vídeo acelerado por hardware en DirectShow/WinForms
El hardware de destino tiene procesadores Atom débiles pero fuertes gráficos NVidia 9400. Sé que los gráficos están integrados, pero tengo entendido que son buenos para la reproducción de videos.
Testing en Windows 7, si juego mis archivos de prueba en WPF, utilizando el control MediaElement, mi uso de la CPU es 0.
Sin embargo, el sistema operativo de destino es Windows XP y que pueden no tener .NET 3.0 . Por lo tanto, la aplicación debe ejecutarse en WinForms. Por varias razones, Windows Media Player ActiveX no es una opción. Así que estamos viendo DirectShow.
Armado un reproductor usando DirectShow.NET, reproduciendo el video a pantalla completa usando el VMR9. Usando este enfoque, mis archivos WMV consumen entre 20 y 30% de CPU. Tuve que instalar un muxer/demuxer mp4 para incluso reproducir los archivos H264, y luego consumieron 40 - 50% de CPU.
- Sé que Windows 7 admite H264 fuera de la caja. Sin embargo, parece que no es un filtro DirectShow?
- ¿Por qué mi video se acelera usando WPF, pero no cuando uso DirectShow? Tengo entendido que DirectShow admite DXvA.
tldr: ¿cómo puedo lograr la reproducción de video acelerada por hardware WMV y H264 en WinForms?
Gracias!
Tendrá que encontrar un decodificador más inteligente que funcione con DirectShow para obtener un mejor rendimiento. Los buenos cuestan dinero, ffdshow es gratis. En algún momento, quizás desee considerar si la instalación de .NET 3.0 en las pocas máquinas XP que aún no la tienen es quizás menos complicada que la instalación de decodificadores posiblemente caros y malhumorados. –
Gracias! Parece que .NET 3.0 EVR es la respuesta ... – TheNextman