跨平台相机API

时间:2010-04-03 05:41:23

标签: c++ video cross-platform camera directshow

我现在正在构建一个视频转换滤镜,必须实时转换视频帧。 滤波器的一个关键要求是具有高性能,以最小化变换期间丢帧的数量。

优先级较低但也很好的另一个要求是使其跨平台(PC和移动设备)。

该应用程序是用C ++构建的。

现在我的问题是:

是否有任何API更易于移植,并且具有与DirectShow类似或更好的性能特征?因为DirectShow的可移植性仅限于基于Windows的设备(PC和Windows Mobile& CE平台)。

另外我注意到,例如使用HTC的自定义相机API比DirectShow提供的性能要好得多。如果要检查这一点,请尝试在DirectShow中构建一个过滤器,将每个颜色乘以2并从屏幕上的摄像头实时渲染。然后用HTC的API做同样的事情。供应商的特定API提高了近4-5倍的性能。因此,如果库使用驱动程序的特定于设备的实现,那将是非常好的,因为在移动设备(大约约500 MHz)上执行此转换时性能至关重要。

2 个答案:

答案 0 :(得分:3)

opencv.org,它有一个非常简单的跨平台接口,用于连接摄像机,但这是一个专为图像处理应用而设计的复杂系统,并不直接提供捕获。您需要处理帧并将它们流式传输到文件中。此外,至于性能,当我看着openCV时,它的窗口侧面似乎在Windows上使用了一个非常古老的16位视频框架:(。

您可以尝试诺基亚的QT应用程序框架。他们目前正在开发一个“QT多媒体”库,可以满足您的需求。但是,这是目前的测试版产品,而我的经验(3-4个月前)一直是Windows端口仍然需要一些工作。因人而异。
您必须安装QT,然后从qt.nokia.com/downloads/的“其他下载部分”安装“新QT APIS - 移动项目”。根据项目的时间范围,这可能是一个不错的选择。 QT绝对是一个不错的工具包恕我直言。

答案 1 :(得分:2)

考虑在OpenGL着色器中执行此操作,然后过滤器可以是硬件加速的,它们可以在桌面和GLES移动设备上运行(但它们不会完全兼容)。你可以(轻松地)以这种方式执行的操作有些限制,但是你想要在视频过滤中做的大多数事情都可以完成。