android、windows上多个USB Camera同时使用实验小结

androidwindows上多个USB Camera同时使用实验小结

 

           USB Camera是个不错的东西,但是多个USB Camera能同时打开使用吗?笔者在windows PC上做过实验,分两种情况:

        实验一:将两个USB Camera分别接到PC上两个USB host接口上,可以同时预览摄像头,截图如下:

 android、windows上多个USB Camera同时使用实验小结_第1张图片

          实验二:将两个USB Camera通过同一个USB HUB接到PC1USB host接口上,同一时间只能预览一个摄像头,两个分开使用都能工作,只是不能同时工作,截图如下:

 android、windows上多个USB Camera同时使用实验小结_第2张图片

          在android平台,笔者也做了上面说的实验二,情况一样,也是同一时间只能有一个在工作。实验条件:先让一个camera工作在后台,通过写一个mediarecoder的应用,在退出应用的时候不做mMediaRecorder.stop();这样这个camera就会一直在录像,后台一直在处理它的数据。另外,写一个类似camera程序,只要可以预览就可以了,笔者也做了一个这样的应用,连hal层、JNIapk都独立些一套。但是在运行这个应用的时候,会出现一些错误:

[ 1342.944561] uvcvideo: uvc_v4l2_mmap
[ 1342.944714] uvcvideo: uvc_v4l2_mmap
[ 1342.944853] uvcvideo: uvc_v4l2_mmap

[ 1342.961262] uvcvideo: Device requested 956 B/frame bandwidth.
[ 1342.961280] uvcvideo: Selecting alternate setting 6 (956 B/frame bandwidth).
[ 1342.964808] uvcvideo: Allocated 5 URB buffers of 32x956 bytes each.
[ 1342.965079] uvcvideo: Failed to submit URB 0 (-28).
01-01 09:45:42.970 D/UVCDecHW( 4504): TO VIDIOC_REQBUFS count: 4[ 1342.967080] sw-ohci sw-ohci.1: leak ed ffdfb240 (#81) state 2

01-01 09:45:42.990 D/UVCDecHW( 4504): index: 0, mem: 520c6000, len: 25800, offset: 0
01-01 09:45:42.990 D/UVCDecHW( 4504): index: 1, mem: 520ec000, len: 25800, offset: 26000
01-01 09:45:42.990 D/UVCDecHW( 4504): index: 2, mem: 52112000, len: 25800, offset: 4c000
01-01 09:45:42.990 D/UVCDecHW( 4504): index: 3, mem: 52138000, len: 25800, offset: 72000
01-01 09:45:43.010 E/UVCDecHW( 4504): StartStreaming: Unable to start capture: No space left on device
01-01 09:45:43.010 E/UVCDecHW( 4504): ERROR: v4l2Init, line: 565
01-01 09:45:43.010 E/UVCDecHW( 4504): ERROR: startUVCDecoder, line: 23 

笔者尝试在android平台上做实验一,也没有成功。实验方法还是一样的,因为不同US B Host接口进去,都是产生video设备文件。出错信息稍微有些不一样,如下:

  

[   67.781802] uvcvideo: uvc_v4l2_mmap
[   67.799917] uvcvideo: uvc_v4l2_mmap
[   67.800834] uvcvideo: uvc_v4l2_mmap
[   67.801773] uvcvideo: uvc_v4l2_mmap
[   67.820917] uvcvideo: Device requested 3072 B/frame bandwidth.
[   67.820936] uvcvideo: Selecting alternate setting 6 (3072 B/frame bandwidth).
[   67.831425] uvcvideo: Allocated 5 URB buffers of 32x3072 bytes each.
[   67.831485] WRN:L2837(drivers/usb/sun7i_usb/hcd/core/sw_hcd_host.c):ERR: sw_hcd_urb_enqueue, ep packet is too big, maxpacket = 5120
[   67.831513] uvcvideo: Failed to submit URB 0 (-90).
[   67.832153] [sw_hcd]: sw_hcd_h_disable, epnum = 81
[   69.474063] [fantasy] wrn dbs_check_cpu, 1227 : try to switch cpu freq to 672000 
[   72.574266] [fantasy] wrn dbs_check_cpu, 1227 : try to switch cpu freq to 480000 
[   75.444027] [fantasy] wrn cpu need plugout, cpus_load_max:85<30 && cpus_rq_max: 189<200
[   75.458793] CPU1: shutdown


      从笔者目前了解到的情况是,同一个USB host只能同时工作一个USB video设备,但是还是可以挂多个USB video设备。在android平台上两个usb host也没有同时跑起两个usb camera,但是windows系统上可以。里面还是有很多东西需要研究。

 

你可能感兴趣的:(android)