UVC_ERROR_INVALID_DEVICE not open camera:err=-50
由于客户需求,笔者最近在测试大型android平板设备,但是所使用的厂商提供的设备并未继承前后置摄像头模块,因此需要调用usb摄像头,参考了网上众多的资料,发现目前调用外置usb摄像头的方法基本上都是基于UVCCamera这个开源项目,原理是android设备具备otg功能,通过检测android设备是否有usb设备连接,进一步采集usb摄像头所采集到的图像数据。 在测试开源项目https://github.com/jiangdongguo/AndroidUSBCamera的过程中,发现使用编译源码的方式进行测试时,可能会产生如下报错,并导致摄像头打不开:
E/libuvc/device: [30700*device.c:944:uvc_scan_control]:UVC_ERROR_INVALID_DEVICE
E/UVCCamera: [30700*UVCCamera.cpp:172:connect]:could not open camera:err=-50
经过多方查证以及打印查看日志发现,导致此问题的原因可能是usb口被占用!?(但笔者并未使用其他usb设备,很玄学)。 发现问题后便有了解决办法,由于该源码中的 mCameraHelper.requestPermission(0)是默认打开第一个usb设备,但是实际上所使用的usb摄像头并未处于第一位,因此将requestPermission(0)改为requestPermission(1)或其他数字后再进行测试,一般就可以解决问题了。 或者可以更换摄像头所用的usb插口试一试,但是笔者使用此方法并为成功。
|