一、什么是UVC?
UVC,全称为:USB video class或USB video device class。是Microsoft与另外几家设备厂商联合推出的
为USB视频捕获设备定义的协议标准。
二、为什么Android要使用UVCCamera?
1、名词解释:
OTG是On-the-go的英文缩写,是无线通讯设备或是移动设备的一项拓展功能。(官方解释太正式了,看简单版的吧!)
简单版 :OTG是让设备支持外接U盘,通过一个USB线,可以像电脑一样,读取U盘里的文件或者写入;
2、为什么Android要使用UVCCamera?
在Android手机上 如果我们使用 USBCamera设备 就得需要OTG功能,大部分手机的OTG功能都被厂商屏蔽掉了,
如果想用就得ROOT设备(用户如果装一个app就得root设备,不现实!!)
而开源项目UVCCamera,实现了手机无需root就支持USBCamera设备的检测、连接、预览和音视频数据采集等功能。
UVCCamera开源项目链接 : https://github.com/saki4510t/UVCCamera
三、了解每个Demo的效果
1)USBCameraTest0
显示如何使用SurfaceView来启动/停止预览。
2)USBCameraTest
显示如何启动/停止预览。这与USBCameraTest0几乎相同,
但是使用自定义的TextureView来显示相机图像而不是使用SurfaceView。
3)USBCameraTest2
演示如何使用MediaCodec编码器将UVC相机(无音频)的视频记录为.MP4文件。
此示例需要API>=18,因为MediaMuxer仅支持API>=18。
4)USBCameraTest3
演示如何将音频(来自内部麦克风)的视频(来自UVC相机)录制为.MP4文件。
这也显示了几种捕捉静止图像的方式。此示例可能最适用于您的定制应用程序的基础项目。
5)USBCameraTest4
显示了访问UVC相机并将视频图像保存到后台服务的方式。
这是最复杂的示例之一,因为这需要使用AIDL的IPC。
6)USBCameraTest5
和USBCameraTest3几乎相同,但使用IFrameCallback接口保存视频图像,
而不是使用来自MediaCodec编码器的输入Surface。
在大多数情况下,您不应使用IFrameCallback来保存图像,因为IFrameCallback比使用Surface要慢很多。
但是,如果您想获取视频帧数据并自行处理它们或将它们作为字节缓冲区传递给其他外部库,
则IFrameCallback将非常有用。
7)USBCameraTest6
这显示了如何将视频图像分割为多个Surface。你可以在这个应用程序中看到视频图像并排观看。
这个例子还展示了如何使用EGL来渲染图像。
如果您想在添加视觉效果/滤镜效果后显示视频图像,则此示例可能会对您有所帮助。
8)USBCameraTest7
这显示了如何使用两个摄像头并显示来自每个摄像头的视频图像。这仍然是实验性的,可能有一些问题。
9)usbCameraTest8
这显示了如何设置/获取uvc控件。目前这只支持亮度和对比度。
四、UVCCamera项目模块介绍
1、整个UVCCamera框架包括:
• Java层封装
• libjpeg-turbo1500.so、libusb100.so、libuvc.so、libUVCCamera.so这几个库
• 库的源码
2、库文件功能介绍