RK3288     Android5.1   多个品牌USB摄像头

同一块主板和代码,大部分品牌的USB摄像头可以正常使用,只有某一款USB摄像头不能使用。

插上摄像头,底层可以识别到摄像头。

<>[ 47.479515] usb -1.4: new high-speed USB device number  using usb20_host
<>[ 47.696548] usb -1.4: New USB device found, idVendor=058f, idProduct=
<>[ 47.696719] usb -1.4: New USB device strings: Mfr=, Product=, SerialNumber=
<>[ 47.696825] usb -1.4: Product: PC Camera
<>[ 47.696908] usb -1.4: Manufacturer: Alcor Micro, Corp.
<>[ 47.708510] uvcvideo: Found UVC 1.00 device PC Camera (058f:)
<>[ 47.718236] input: PC Camera as /devices/ff540000.usb/usb3/-/-1.4/-1.4:1.0/input/input5

但是每次打开摄像头app都显示“无法连接到相机”,上层 log 如下。

D/CameraHal(  ): setParameters(): setParameters(): Set preview size 800x600
... ...
D/CameraHal( ): startPreview(): startPreview177:preview_w = ,preview_h = ,drv_w = ,drv_h =
D/CameraHal( ): cameraSetSize(): cameraSetSize():IN, w = ,h =
... ...
E/CameraHal( ): getFrame(): getFrame(): VIDIOC_DQBUF Failed!!! err[I/O error]
E/CameraHal( ): getFrame(): getFrame(): camera driver or device may be error, so notify CAMERA_MSG_ERROR

最后官方的回复如下:

USB摄像头800x600分辨率输出有问题,强制使用1280x960,同时保留1280x720为录像使用,由软件剪切到1280x720

diff --git a/CameraHal/CameraUSBAdapter.cpp b/CameraHal/CameraUSBAdapter.cpp
index b88dd17..adb446b
--- a/CameraHal/CameraUSBAdapter.cpp
+++ b/CameraHal/CameraUSBAdapter.cpp
@@ -, +, @@ void CameraUSBAdapter::initDefaultParameters(int camFd) params.set(KEY_PREVIEW_W_FORCE,"");
params.set(KEY_PREVIEW_H_FORCE,"");
- params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, parameterString.string());
- params.setPreviewSize(,);
+ params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, "1280x960,1280x720");
+ params.setPreviewSize(, );
/*picture size setting*/
params.set(CameraParameters::KEY_SUPPORTED_PICTURE_SIZES, parameterString.string());
params.setPictureSize(mCamDriverFrmWidthMax, mCamDriverFrmHeightMax);

按照官方的 patch 修改后,摄像头可以正常使用。

如果出现可以预览,不能拍照的问题,还需要更改拍照的分辨率

diff --git a/CameraHal/CameraUSBAdapter.cpp b/CameraHal/CameraUSBAdapter.cpp
index b88dd17..adb446b
--- a/CameraHal/CameraUSBAdapter.cpp
+++ b/CameraHal/CameraUSBAdapter.cpp
@@ -, +, @@ void CameraUSBAdapter::initDefaultParameters(int camFd) params.set(KEY_PREVIEW_W_FORCE,"");
params.set(KEY_PREVIEW_H_FORCE,"");
params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, "1280x960,1280x720");
params.setPreviewSize(, );
/*picture size setting*/
- params.set(CameraParameters::KEY_SUPPORTED_PICTURE_SIZES, parameterString.string());
- params.setPictureSize(mCamDriverFrmWidthMax, mCamDriverFrmHeightMax);
+ params.set(CameraParameters::KEY_SUPPORTED_PICTURE_SIZES, "1280x960,1280x720");
+ params.setPictureSize(, );

RK3288 USB UVC camera 摄像头 VIDIOC_DQBUF Failed!!! err[I/O error]的更多相关文章

  1. EasyPusher进行Android UVC外接摄像头直播推送实现方法

    最近EasyPusher针对UVC摄像头做了适配.我们结合了UVCCamera与EasyPusher,支持将UVC摄像头的视频推送到RTSP服务器上.在此特别感谢UVCCamera这个牛逼的项目! 来 ...

  2. 鏈接Redis報錯`AUTH` failed: ERR Client sent AUTH, but no password is set [tcp://127.0.0.1:6379]

    問題 鏈接Redis報錯`AUTH` failed: ERR Client sent AUTH, but no password is set [tcp://127.0.0.1:6379] 解決 啟動 ...

  3. 【err】开启Persistence-M模式-Check failed: err == CUBLAS_STATUS_SUCCESS (1 vs. 0) : Create cublas handle failed

    前言 安装好CUDA.CUDNN.NVIDIA driver之后,使用mxnet框架的时候出现该错误,本文记录该问题的解决方法. 环境 ubuntu 16.04 MxNet Cuda9.0 Nvidi ...

  4. 解决 AUTH` failed: ERR Client sent AUTH, but no password is set [tcp://127.0.0.1:6379]

    页面报错: ConnectionException In AbstractConnection.php line 155 AUTH` failed: ERR Client sent AUTH, but ...

  5. idea报错:error java compilation failed internal java compiler error

    idea下面报如下问题 error java compilation failed internal java compiler error 解决办法:Setting->Compiler-> ...

  6. idea Error:java: Compilation failed: internal java compiler error

    idea 遇到Error:java: Compilation failed: internal java compiler error 是提示说你当前使用的编译器jdk版本不对. 按住Ctrl+Alt ...

  7. Error:java:Compilation failed: internal java compiler error

    在IDEA中编译时出现这个错误:Error:java:Compilation failed: internal java compiler error! Information:Using javac ...

  8. Deployment failed due to an error in FastDev assembly synchronization.

    在编译的时候发生Assembly synchronization error,显示信息为:Deployment failed due to an error in FastDev assembly s ...

  9. iOS9 白名单问题 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

    [iOS开发]-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo ...

随机推荐

  1. Struts2中的包的作用描述

    asm-3.3.jar作用:操作java字节码的类库包路径及主要类:未提供 asm-commons-3.3.jar作用:提供了基于事件的表现形式包路径及主要类:未提供 asm-tree-3.3.jar ...

  2. day5-os、sys模块

    一.概述 开发运维相关支撑系统现今已成为Devops下的一大热门领域,Python在这方面也有着自己独到的优势.这类场景以及其他一些场景下,需要调用一些操作系统的接口,这就涉及到今天要讲述的OS模块和 ...

  3. 029——VUE中键盘语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Partition 1 does not start on physical sector boundary.分区信息不正常

    [root@v1 ~]# df -h Filesystem      Size  Used Avail Use% Mounted on /dev/sda2        20G  3.3G   16G ...

  5. Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory 解决办法

    当你使用的Gradle版本是2.4以上,Android插件版本是1.3.0以上的时候就会出现这个问题,这时候你只需将android-maven-gradle-plugin插件版本改为classpath ...

  6. shell的初步介绍

    linux下Shell介绍 概述:每个人在成功登陆LIUX后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入你需要的命令,若是命令正确,系统就会一句命令的要求来执行,知道注销系统位置 ...

  7. c# Request.Files["xx"]取不到值解决办法

  8. flowable EngineConfiguration的实现分析(2)

    EngineConfiguration的实现类是一个抽象类:AbstractEngineConfiguration 一.引擎配置的分类 继承 AbsractEngineConfiguration的子类 ...

  9. Pandas库常用函数和操作

    1. DataFrame 处理缺失值  dropna() df2.dropna(axis=0, how='any', subset=[u'ToC'], inplace=True) 把在ToC列有缺失值 ...

  10. Objective C - 2 - 随机数,可变字符串,字符串,SubString

    int main(int argc, const char * argv[]) { @autoreleasepool { NSString *outputString = @"1234567 ...