DirectShow中的实时视频编码

mad*_*ger 6 encoding directshow cuda real-time opencl

我开发了一个Windows应用程序,使用DirectShow从外部设备捕获视频.图像分辨率为640x480,无压缩保存的视频尺寸非常大(每秒约27MB).

我的目标是尽可能减小这个大小,所以我正在寻找一个允许我实时压缩视频的编码器.它可以是H.264,MPEG-2或其他任何东西.它必须允许我将视频保存到磁盘,最好是我也可以通过网络实时流式传输(Wi-Fi,所以大小应该是每秒1MB左右,或更少).重大的质量损失是不可接受的.

我发现为此任务获取适当的DirectShow过滤器非常困难.可以假设客户机是相当现代的(快速双核CPU)并且可以使用CUDA/OpenCL.有一些应用程序允许使用CUDA编码视频并提供良好的性能,但是我没有找到适当的DirectShow过滤器或可用于开发一个的API.NVIDIA nvcuvenc.dll似乎有私有API,因此我无法直接使用它.我找到的任何基于CPU的编码器对我的要求都太慢了,但也许我错过了一些.

任何人都可以向我推荐一个解决方案,即可以在闭源应用程序中使用的编码器(付费或免费),无论是使用CPU/CUDA/OpenCL还是DirectCompute,都可以获得良好的性能?或者我应该使用一些外部硬件视频编码器?

最好的祝福,

madbadger