天天看點

Android 雙usb 攝像頭支援

公司有一款産品需要支援雙USB攝像頭,标準的Android裝置隻支援同時打開一個camera,若要支援兩個顯示需要修改rk3288 源碼,

hardware/rockchip/camera/CameraHal/CameraHal_Module.h

#define CAMERAS_SUPPORT_MAX             2
#define CAMERAS_SUPPORTED_SIMUL_MAX     2
           

把上面兩個都修改為2。本來自己想用Android 官方提供的camera2.來打開雙camera ,但是一直提示錯誤隻能同時打開一個。經過與rk 官方溝通發現是我們版本的攝像頭接的usb不是主host導緻問題。

02-27 06:36:02.674 2425 2494 E RequestThread-0: Timed out while waiting for request to complete.
02-27 06:36:02.675 2425 2494 W RequestHolder: Capture failed for request: 0
有一個攝像頭stream on操作失敗了。
E/CameraHal: cameraStream(531): cameraStream(531): VIDIOC_STREAMON Failed
[ 91.735262] INFO:: dwc_otg_hcd_do_reserve: Insufficient periodic bandwidth for periodic transfer.
[ 91.735262]
[ 91.735331] ERROR::dwc_otg_hcd_urb_enqueue:570: Enqueue failed adding QTD status -28
[ 91.735331]
[ 91.735378] uvcvideo: Failed to submit URB 0 (-28).
           

硬體已經沒法修改。隻能從其他方法解決。所有使用了一個開源第三方的庫。

https://gitee.com/lb887100/UvcCameraDemo.git
           

這個demo 可以正常打開雙usb 攝像頭。

記得ndk 版本不要太高。我的版本是ndk.dir=C:\xxx\ndk-bundle\android-ndk-r14b,不然編譯不過