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. Java Properties基础知识总结

    在Java语言中,使用一种以.properties为扩展名的文本文件作为资源文件,该类型的文件的内容格式为类似: some_key=some_value #注释描述 还有一种是使用xml文件保存项目的 ...

  2. CodeForces 1294B Collecting Packages(排序+贪心)

    http://codeforces.com/contest/1294/problem/B 大致题意: 一张图上有n个包裹,给出他们的坐标,一个机器人从(0,0)出发,只能向右(R)或向上(U),问能否 ...

  3. Python—使用Json序列化Datetime类型

    import json from datetime import datetime, date """ str,int,list,tuple,dict,bool,None ...

  4. Python—守护进程管理工具(Supervisor)

    一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...

  5. B-树与B+树 两者的区别

    一个m阶的B树具有如下几个特征: 根结点至少有两个子女. 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 每一个叶子节点都包含k-1个元素,其中 m/2 < ...

  6. UML-业务规则

    样例:

  7. ios AVPlayer参考

    http://www.cnblogs.com/kenshincui/p/4186022.html#avPlayer

  8. linux操作提示:“Can't open file for writing”或“operation not permitted”的解决办法

    在linux上使用vi命令修改一个文件内容的时候,发现无法保存,每次写完使用":q!"命令可以正常退出但是使用":wq!"命令保存文件并退出时出现一下信息提示: ...

  9. 单调栈and单调队列(此文太多坑了,以后再填)

    单调栈 单调栈是一种特殊的栈,特殊之处在于栈内的元素都保持一个单调性,可能为单调递增,也可能为单调递减. 性质: 单调栈里的元素具有单调性 元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除 使用单调 ...

  10. 正则表达式grep学习(一)

    文本处理三剑客grep       文本过滤sed       流过滤awk       格式处理 正则表达式就是一些特殊字符组成的模式,赋予了他特定的含义 在大多数程序里,正则表达式都被置于两个正斜 ...