Android-UVC摄像头总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-UVC摄像头总结相关的知识,希望对你有一定的参考价值。
参考技术A http://www.usbzh.com/article/detail-80.html目前android端的开源驱动主要有UVCCamera,目前多数开源项目都是基于此处,感谢saki4510t大神。 https://github.com/saki4510t/UVCCamera
此处开源项目的每个Demo实例:
目前此项目结构驱动层面-共用库-示例
驱动层面原生C#语言编写,根据自己使用的架构可以编译不同架构so
目前我是用的是ndk15版本编译,其他版本编译都有多少问题
目前我将上传我处理过的编译版本给大家参考,修复了在issue提的问题。并且对项目结构进行了调整其中的usblq和usbcw个人项目的lib库大家可以去掉
一般我们添加依赖都是通过aar和jar方便管理
这里顺带说下我是怎么打包aar和jar的,目前网上方法较多,我就以我觉得最为方便的方法示之。
需要混淆压缩的需要在此处编译release版本
点击运行或者在task中找到名为makeJar的命令
UVCCamera nativeConnect 返回的错误码 集合:
项目中常见问题:
视频相关知识总结
AVFoundation视频流的捕捉:
要捕捉视频需要这几个类:
AVCaptureDevice 代表了输入设备,例如摄像头与麦克风。
AVCaptureInput 代表了输入数据源
AVCaptureOutput 代表了输出数据源
AVCaptureSession 用于协调输入与输出之间的数据流
AVCaptureVideoPreviewLayer 提供摄像头的预览功能
具体的步骤:
1.创建AVCaputureSession。
AVCaptureSession * session = [[AVCaptureSession alloc]init];
2.创建AVCaptureDevice:
AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
3.创建AVCaptureDeviceInput,并添加到Session中:
我们需要使用AVCaptureDeviceInput来让设备添加到session中, AVCaptureDeviceInput负责管理设备端口。我们可以理解它为设备的抽象。一个设备可能可以同时提供视频和音频的捕捉。我们可以分别用AVCaptureDeviceInput来代表视频输入和音频输入。
NSError * error;
AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
4.创建AVCaptureOutput: 线程必须是串行的,确保视频帧按序到达。
AVCaptureVideoDataOutput * output = [[AVCaptureVideoDataOutput alloc]init];
[session addOutput:output];
[output setSampleBufferDelegate:self queue:dispatch_get_global_queue(0, 0)];
5.开始捕捉
[session startRunning];
6.在AVCaptureVideoDataOutputSampleBufferDelegate代理方法中进行视频流的分析
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
}
以上是关于Android-UVC摄像头总结的主要内容,如果未能解决你的问题,请参考以下文章