Camera2 doc

The android.hardware.camera2 package provides an interface to individual camera devices connected to an Android device. It replaces the deprecated Camera class.

android.hardware.camera2包提供一个连接到Android设备的独立Camera设备接口

This package models a camera device as a pipeline, which takes in input requests for capturing a single frame, captures the single image per the request, and then outputs one capture result metadata packet, plus a set of output image buffers for the request.
The requests are processed in-order, and multiple requests can be in flight at once. Since the camera device is a pipeline with multiple stages, having multiple requests in flight is required to maintain full framerate on most Android devices.

这个包把相机设备模拟成一个流水线(管道?), 这个流水线可以接受拍摄单个frame的输入请求, 可以为每一个请求拍摄一个图片, 然后输出一个拍摄结果元数据包, 附带所请求的输出图片buffers集合。

这些请求被顺序处理,并且多个请求可以同时被发出。 由于相机设备室一个多状态的流水线, 为了在大多数安卓设备上保持全帧率, 同时发出多个请求成为必须.

To enumerate, query, and open available camera devices, obtain a CameraManager instance.

为了列举,查询,和打开可用的相机设备,需要获取一个CameraManager实例。

Individual CameraDevices provide a set of static property information that describes the hardware device and the available settings and output parameters for the device. This information is provided through the CameraCharacteristics object, and is available
through getCameraCharacteristics(String)

独立的CameraDevices提供一个描述硬件设备&可用设置&输出参数的静态的属性信息集合。这些信息通过CameraCharacteristics类提供,可以通过getCameraCharacteristics(String)调用。

To capture or stream images from a camera device, the application must first create a camera capture session with a set of output Surfaces for use with the camera device, with createCaptureSession(List, CameraCaptureSession.StateCallback, Handler). Each Surface
has to be pre-configured with an appropriate size and format (if applicable) to match the sizes and formats available from the camera device. A target Surface can be obtained from a variety of classes, including SurfaceView, SurfaceTexture via Surface(SurfaceTexture),
MediaCodec, MediaRecorder, Allocation, and ImageReader.

想从一个相机设备拍照或获取数据流,应用需要首先创建一个带有供camera device使用的surfaces集合的camera capture session, 如此:createCaptureSession(List, CameraCaptureSession.StateCallback, Handler). 每一个surface必须提前配置好和相机设备相对于的大小和格式。

一个目标surface可以从几个类获得, 比如SurfaceView, SurfaceTexture via Surface, MediaCodec, MediaRecorder, Allocation, 和 ImageReader。

Generally, camera preview images are sent to SurfaceView or TextureView (via its SurfaceTexture). Capture of JPEG images or RAW buffers for DngCreator can be done with ImageReader with the JPEG and RAW_SENSOR formats. Application-driven processing of camera
data in RenderScript, OpenGL ES, or directly in managed or native code is best done through Allocation with a YUV Type, SurfaceTexture, and ImageReader with a YUV_420_888 format, respectively.

一般来说,相机预览图片被发送到SurfaceView或TextureView(通过它的SurfaceTexture)。通过JPEG和RAW_SENSOR的ImageReader可以完成JPEG和DngCreater的RAW buffers的拍照。

程序驱动的数据处理可以通过分别分配YUV type, SurfaceTexture, 和YUV_420_888格式的ImageReader使在RenderScript, OpenGL ES, 或直接管理或native code得到很好的处理。

The application then needs to construct a CaptureRequest, which defines all the capture parameters needed by a camera device to capture a single image. The request also lists which of the configured output Surfaces should be used as targets for this capture.
The CameraDevice has a factory method for creating a request builder for a given use case, which is optimized for the Android device the application is running on.

应用程序然后需要创建一个CaptureRequest,CaptureRequest定义了设备拍摄一张照片需要的所有拍摄参数。

此request还列出了作为此次拍照的tartgets的配置好的output surfaces。

CameraDevice类有一个为一个用户case创建一个request builder的工厂方法,此方法已经针对程序运行的Android设备优化。

Once the request has been set up, it can be handed to the active capture session either for a one-shot capture or for an endlessly repeating use. Both methods also have a variant that accepts a list of requests to use as a burst capture / repeating burst. Repeating
requests have a lower priority than captures, so a request submitted through capture() while there‘s a repeating request configured will be captured before any new instances of the currently repeating (burst) capture will begin capture.

一旦这些请求被发送, 它们可以被激活的capture session作为one-shot capture或者无限循环处理。

这两个方法也都有一个变量可以接受作为burst/重复burst的请求list。

Repeating requests比captures优先级低,所以当repeating request正在执行时来了一个capture() request,这个capture会先执行,然后再执行repeating的下一个拍照实例。

After processing a request, the camera device will produce a TotalCaptureResult object, which contains information about the state of the camera device at time of capture, and the final settings used. These may vary somewhat from the request, if rounding or
resolving contradictory parameters was necessary. The camera device will also send a frame of image data into each of the output Surfaces included in the request. These are produced asynchronously relative to the output CaptureResult, sometimes substantially
later.

处理完一个request后, camera device会生成一个TotalCaptureResult对象, 包含了拍照时设备的状态信息和所用的配置。

这些设置根据request变化,如果解决对立参数必要的话。

相机设备还会给request里的每一个output surfaces发送图片数据。

这些数据和captureResult是异步的,稍微晚一点。

时间: 2024-10-10 22:00:34

Camera2 doc的相关文章

在C#中使用Spire.doc对word的操作总结

在C#中使用Spire.doc对word的操作总结 在最近的工程中我们要处理一些word文档.通过在网上的大量搜索,我发现大多数软件功能不是不完整就是有重复.极少数可以完全实现的word组件又要收费.功夫不负有心人,终于找到了可以满足我们需要的免费的C# word程序库.为了和其他的作比较,我在这里先做以下汇总.希望对大家有帮助. 如何得到? 这个免费版的word 组件可以在Codeplex下载到,你也可以从本文里直接下载msi文件.它还提供了一些源代码. Word操作汇总 1.        

myeclipse中关联spring doc帮助文档

这是一篇分享技巧的文章:使用myeclipse关联帮助文档 ① 选中spring.jar ② 鼠标右击,选择properties,弹出框中选择Javadoc Location,找到对应的文档位置,OK ③ 选择spring.jar中的类 ④ 按住F1,弹出一个help框,选择Java help:Javadoc for 'xxx' ⑤ 下图就是对应的文档内容 myeclipse中关联spring doc帮助文档,码迷,mamicode.com

利用Android Camera2 的照相机api 实现 实时的图像采集与预览

最近想要做一个客户端往服务器推送实时画面的功能,首先可以考虑到两种思路,一种是在客户端进行视频流的推送,主要利用RTSP等流媒体协议进行传输,而另外一种是通过摄像头获取当前画面,将每一帧作为对象单独传输. 项目想要实现的功能最终目的是对实时画面的每一帧进行处理,可以考虑客户端推流到服务器,再在服务器进行帧解析的操作,但由于目前很多的流媒体推送框架在推流端或者服务端都或多或少存在限制,很少有完全开源的项目,再加上传送画面的同时需要附带部分的数据,仍然需要另外建立连接进行传输,所以暂时搁置这一方案.

; AutoHotkey全自动安装环境设置和测试JAVA+Eclipas+Android+JRE+JDK+SDK+ADT+Android模拟器+Android Virtual Device Manager+NDK+Studio+Doc+Help+Android Application Project编程调试windows环境[草稿版] DetectHiddenWindows,On SetTitl

; AutoHotkey全自动安装环境设置和测试JAVA+Eclipas+Android+JRE+JDK+SDK+ADT+Android模拟器+Android Virtual Device Manager+NDK+Studio+Doc+Help+Android Application Project编程调试windows环境[草稿版] DetectHiddenWindows,OnSetTitleMatchMode,2 ; 激活窗口并单击按钮IfWinExistActiveControlClick

atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc

atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc 1. 手机短信验证码 vs 图片验证码 安全性(破解成本)确实要高一些1 1.1. 破解基本原则有两种,一种是绕过验证码.一种是拦截1 2. 手机 短信 验证码的 破解 拦截 方式分类2 2.1. 按照源头破解拦截分为源头拦截,中间拦截,,终端拦截...2 2.2. 按照是否软硬件可分类为 纯软件方案与软硬件结合方案2 3. 具体的方法如下2 3.1. 后台服务器漏洞绕过法

atitit.基于bat cli的插件管理系统.doc

atitit.基于bat cli的插件管理系统.doc /AtiPlatf/src_atibrow/com/attilax/cmd/CmdX.java pathx.isWebPathMode=true; String bat=pathx.classPathParent()+"/other/del_indexs.bat"; bat=bat.replace("/", "\\"); String cmd=" cmd.exe /c \"

atititi.soa  微服务 区别 联系 优缺点.doc

atititi.soa  微服务 区别 联系 优缺点.doc 1. 应用微服务的动机,跟传统巨石应用的比较1 2. 面向服务架构(SOA)  esb2 3. 微服务架构(Microservices)2 4. 微服务架构特征(Characteristics)3 4.1. 通过服务实现组件化 vs   通过库(library)3 4.2.  去中心统一化  vs 统一的技术平台3 4.3. 7. Design for failure3 5. 服务划分有两个原则要遵循:单一职责原则    每个工具都小

userService 用户 会员 系统设计 v2 q224 .doc

userService 用户 会员 系统设计 v2 q224 .doc 1. Admin  login1 2. 普通用户注册登录2 2.1. <!-- 会员退出登录 -->2 2.2. <!-- 进入会员首页 -->3 2.3. <!-- 进入会员信息 -->3 2.4. <!-- 修改会员密码 -->3 3. 参考4 1. Admin  login http://localhost/login!userLogin.ct http://localhost/l

Atitit.&#160;visual&#160;studio&#160;vs2003&#160;vs2005&#160;vs2008&#160;&#160;VS2010&#160;vs2012&#160;vs2015新特性&#160;新功能.doc

Atitit. visual studio vs2003 vs2005 vs2008  VS2010 vs2012 vs2015新特性 新功能.doc 1.1. Visual Studio2 1.2. Visual Studio 972 1.3. Visual Studio 6.02 1.4. Vs20022 1.5. Vs20032 1.6. Vs20052 1.6.1. 数据访问  Web开发     Windows Forms 方面的开发特性增强2 1.6.2. Refactoring 2