2013-03-19 78 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