2013-03-19 33 views
0

我用v4l2打开两个网络摄像头。 30帧/秒的一切正常。以60 fps,开始麻烦。第一个凸轮上的FPS约为20,第二个凸轮上的FPS约为0-3。我尝试在不同的线程(和不同的处理器内核)中运行 - 同样的问题。 我觉得在v4l2驱动程序的问题。v4l2多设备故障

我的任务非常简单 - 以60 fps的速度从一台电脑上的两个网络摄像机捕获数据。可能吗?可能是什么问题?我可能会显示代码,但它很大。

对不起,我的英语。

回答

0

应该有可能。 问题可能是:

  • 你有DMA能力的硬件,但你没有使用DMA。高FPS可以降低您的表现。
  • 你的缓冲区队列太短。您获得更多的缓冲区比你在队列中所分配的
  • 别人,这取决于你的实现
+0

谢谢回答。 但我怎么能使用DMA?现在我只使用v4l2 API。 如果在短缓冲区队列中存在问题,那么增加缓冲区数量将不能解决问题。所以或者表现够了,或者表现还不够,那么没有什么能帮上忙。 – herolover 2013-03-20 08:57:29

+0

如果硬件可以执行DMA,则可以使用DMA。 V4L2提供了VideoBuf2框架来处理缓冲区。在这里你可以找到不同的DMA内存分配器vb2-dma-contig,vb2-dma-sg。 显然,如果你的摄像头比你的处理器快,一个长缓冲队列不能解决问题。但是如果你有一个10个缓冲区的队列,并且你有15个帧,你可以设置10个缓冲区,但你必须等待设置其他5个缓冲区。 – Federico 2013-03-20 09:45:42