SimpleWebCam Source Code:https://bitbucket.org/neuralassembly/simplewebcam/src

1. USB摄像头UVC兼容(如今大部分兼容)

2. 设备是否支持USB-OTG

3. 是够在/dev目录下创建了设备(shell执行ls -l /dev/v*,看到video0 video1)

4. 如果没有/dev设备,需要写一个固件(UVC)跟硬件通信

什么是UVC?

UVC,全称:USB video class或video device class,是Microsoft与另外几家设备厂商联合退出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。

主流操作系统 (如Windows XP SP2 and later, Linux 2.4.6 and later, MacOS 10.5 and later) 都已提供UVC设备驱动,符合UVC规格的硬件设备在不需要安装任何驱动程序下即可在主机中正常使用。

怎样判断一个摄像头是否属于UVC规范?

1. 使用lsusb命令,找出摄像头设备号(Vendor ID)和产品号(Product ID)

2. 查找是否有视频类接口信息

# lsusb -d VID: PID -v | grep "14 Video"

如果兼容,则会输出如下信息:

bFunctionClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

否则,则是一个non-UVC设备

----------------------

camera控制主要参考v4l2接口

v4l2 Camera详细设置

v4l2_streamparm

----------------------

C语言 select函数使用

fd_set readfd;
struct timeval timeout; FD_ZERO(&readfd); //初始化readfd
FD_SET(gps_fd, &readfd); //把gps_fd加入readfd
timeout.tv_sec = ; //设置3秒超时
timeout.tv_usec = ; j = select(gps_fd+, &readfd, NULL, NULL, &timeout); //用select对gps_fd进行轮循
if( j> ){
if( FD_ISSET(gps_fd, &readfd) ){ //如果gps_fd可读
i = read(gps_fd, buf, SIZE);
buf[i] = '\0';
}
}

YUV

0x480, 0x720, 0x1080, 

MJPEG:

640x480, 0x720, 0x1080, 30

MJPEG解码
可以参考这个文件frameworks/base/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp,这里面调用的libskia.so,libskia里调用的硬解码接口hw_jpeg_deco
 
 
在v4l2读出的帧中找到SOF0(Start Of Frame ),插入个huffman表就可以用libjpeg解码成rgb。
可以参考mjpg-streamer中input_uvc目录下的代码,或者我刚调试好的 :https://github.com/joeshang/joycar/blob/master/module/v4l2_camera/decoder_mjpeg.c

Android开发之《USB Camera》的更多相关文章

  1. Android开发之《ffmpeg解码mjpeg视频流》

    MJPEG格式和码流分析,MJPEG格式的一些简介 FFmpeg解码USB摄像头MJPEG输出:http://blog.csdn.net/light_in_dark/article/details/5 ...

  2. android 开发对gif解码(适配android 4.2、4.3、4.4版本)

    android 开发对gif解码(适配android 4.2.4.3.4.4版本) 使用方法: public class ImageInputActivity extends Activity imp ...

  3. 在iOS平台使用ffmpeg解码h264视频流(转)

    在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或UR ...

  4. 在iOS平台使用ffmpeg解码h264视频流

    来源:http://www.aichengxu.com/view/37145 在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,f ...

  5. Android开发——通过wifi接收IPCamera视频流

    前面,我们已经了解了怎么在android app上打开关闭和扫描,搜索wifi,现在,我来写一下怎么通过连接wifi来使app获取到IPCamera摄像头的视频. 一.通过URL获取视频的地址 二.创 ...

  6. android 开发 解码gif图片,获取每帧bitmap

    环境:android 4.3  (注意对于android4.4版本解码出来不正确,除了第一帧正确外,其余的都是显示不同的地方)  通用版本见: android 开发对gif解码(适配android 4 ...

  7. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  8. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  9. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  10. [原]如何在Android用FFmpeg解码图像

    前一篇[原]如何用Android NDK编译FFmpeg 我们知道了如何使用NDK来编译Android平台下使用的FFmpeg动态库.这篇文章我们就可以使用Android下的JNI来调用FFMpeg进 ...

随机推荐

  1. Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0 异常

    网上看了很多关于此异常的解决方案,但是大多数都是不能用的,今天把正确的解决方案记录下来,以帮助需要的人 问题:有些接口没有设置HttpPost或HttpGet,非接口设置访问权限为private,控制 ...

  2. Centos8无法安装screen的解决方法:使用epel安装screen

    选择了一个基础款的vps安装的镜像选了熟悉的centos的最新版centos8,但是在安装screen的时候,却安装不了,提示: No match for argument: screen 本来以为是 ...

  3. UML-SSD总结

    1.不是所有场景都需要画SSD.需要画SSD的场景: 1).主成功场景 2).频繁发生的场景 3).复杂的场景 2.角色 1).参与者 2).系统(没有类,即黑盒) 3.画SSD时间不要过长,一般几分 ...

  4. ElasticSearch-The number of object passed must be even but was [1]-问题解决

    ES版本:6.4.3 1.The number of object passed must be even but was [1] 问题代码: IndexRequest indexRequest = ...

  5. 题解 P2981 【[USACO10FEB]奶牛在冰Cows on Ice】

    楼上的思路都是从一个石头找跳到另一个石头的路径,但其实这题可以对于上下左右四个方向分别做一个虚拟节点,然后只需要找虚拟节点左边的虚拟节点就行了 问题是:不会用set怎么办??? 其实可以发现用vect ...

  6. ios uiimagepickercontroller 选择相册或者拍照上传

    首先需要实现UIImagePickerControllerDelegate 代理 实现其imagePickerController 方法  这里用于选择图片或的拍照回调 //调用相机拍照 或者 图库选 ...

  7. 创建Git仓库

    创建Git仓库 一.什么是版本仓库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能 ...

  8. HTTP Error 502.5 - Process Failure 解决方案

    .netcore 2.1.4的程序部署到IIS后报以下错误: ======================================================= HTTP Error 50 ...

  9. CodeForces 1005D Polycarp and Div 3(思维、贪心、dp)

    http://codeforces.com/problemset/problem/1005/D  题意: 给一个仅包含数字的字符串,将字符串分割成多个片段(无前导0),求这些片段里最多有多少是3的倍数 ...

  10. 0.3W微功率放大器

    电路结构 电路摘自<晶体管电路设计(上)>. 电路采用+5V单电源供电,两级结构.Tr1构成共射极放大电路作为电压放大级:Tr3,Tr4构成推挽的射极跟随器作为输出级:Tr2作为射极跟随器 ...