he desarrollado una aplicación de Windows que captura vídeo desde un dispositivo externo a través de DirectShow. La resolución de imagen es de 640x480 y los videos guardados sin compresión tienen tamaños muy grandes (aproximadamente 27 MB por segundo).en tiempo real de codificación de vídeo en DirectShow
Mi objetivo es reducir este tamaño tanto como sea posible, así que estoy buscando un codificador que me permita comprimir el video en tiempo real. Podría ser H.264, MPEG-2 o cualquier otra cosa. Debe permitirme guardar el video en el disco y sería mejor si también pudiera transmitirlo en tiempo real a través de la red (Wi-Fi, por lo que el tamaño debería ser de alrededor de 1 MB por segundo o menos). La significativa pérdida de calidad sería inaceptable.
Descubrí que obtener un filtro de DirectShow apropiado para esta tarea es muy difícil. Se puede suponer que la máquina cliente es razonablemente moderna (CPU rápida de 2 núcleos) y puede utilizar CUDA/OpenCL. Hay algunas aplicaciones que permiten codificar videos usando CUDA y ofrecen un buen rendimiento, sin embargo, no he encontrado un filtro DirectShow apropiado o una API que pueda usarse para desarrollar uno. NVIDIA nvcuvenc.dll parece tener API privada, por lo que no puedo usarla directamente. Cualquier codificador basado en CPU que he encontrado es demasiado lento para mis requerimientos, pero tal vez me he perdido algunos.
¿Alguien podría recomendarme una solución, es decir, un codificador (pagado o gratis, que se puede utilizar en una aplicación de código cerrado) que puede lograr un buen rendimiento, independientemente de si utiliza CPU/CUDA/OpenCL o DirectCompute? ¿O tal vez debería usar un codificador de video de hardware externo?
Saludos,
MadBadger
No sé si encontraste una solución para esto, pero mientras tanto desarrollé la codificación Transport Stream para mi producto, tal vez esa solución también sería aceptable para usted ya que está hablando de la transmisión a través de la WiFi –