我开发了一个使用 DirectShow 从外部设备捕获视频的 Windows 应用程序。图像分辨率为 640x480,未经压缩保存的视频尺寸非常大(大约每秒 27MB)。
我的目标是尽可能地减小这个大小,所以我正在寻找一种可以让我实时压缩视频的编码器。它可以是 H.264、MPEG-2 或其他任何东西。它必须允许我将视频保存到磁盘,如果我还可以通过网络(Wi-Fi,因此大小应该在每秒 1MB 左右,或更小)实时流式传输,那将是最好的。显着的质量损失将是不可接受的。
我发现为这个任务获得一个合适的 DirectShow 过滤器是非常困难的。可以假设客户端机器相当现代(快速 2 核 CPU)并且可以使用 CUDA/OpenCL。有一些应用程序允许使用 CUDA 对视频进行编码并提供良好的性能,但是我还没有找到合适的 DirectShow 过滤器或可用于开发的 API。NVIDIA nvcuvenc.dll 似乎有私有 API,所以我无法直接使用它。我发现的任何基于 CPU 的编码器对于我的要求来说都太慢了,但也许我错过了一些。
任何人都可以向我推荐一个解决方案,即编码器(付费或免费,可用于闭源应用程序),无论是使用 CPU/CUDA/OpenCL 还是 DirectCompute,都可以实现良好的性能?或者也许我应该使用一些外部硬件视频编码器?
此致,
疯獾