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摄像头总结的主要内容,如果未能解决你的问题,请参考以下文章

摄像头图像采集基础知识总结

Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

摄像头 ISP 调试的入门之谈(经验总结)

基于ONVIF协议的摄像头开发总结

网络摄像头拉流的方法总结(附python代码)

Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)