本讲是Android Camera专题系列的第23讲,我们介绍Android Camera2 API专题的CaptureRequest详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
CaptureRequest介绍
CaptureRequest可以理解为告诉Camera底层如何处理某一帧数据,包括两部分内容
- Settings
- 硬件相关的参数:sensor, lens, flash等
-
ISP Processing Pipeline相关参数
-
3A相关参数
-
Output Surfaces
- CaptureRequest中带的Surfaces必须在创建Session时使用的Surface List的子集
通过CaptureRequest.Builder来创建CaptureRequest
通过不同的方式送给Camera底层
- capture
-
captureBurst
-
setRepeatingRequest
-
setRepeatingBurst
CaptureRequest类型(通过Capturerequest#isReprocess()可以判断)
- Regular:CameraDevice#createCaptureRequest
-
Reprocess:CameraDevice#createReprocessCaptureRequest
CaptureRequest.Builder介绍
Builder模式:用于设置CaptureRequest参数和创建CaptureRequest对象
API | Description |
---|---|
set(Key |
设置指定Key对应的Value值 |
setPhysicalCameraKey(Key |
设置指定Physical Camera中Key对应的Value值 |
addTarget(Surface outputTarget) | 增加一路输出流 |
setTag(Object tag) | 给CaptureRequest设置一个TAG,用于标识该CaptureRequest,底层在onCaptureCompleted回调时,可以通过Capturerequest#getTag()获取到 |
build() | 创建CaptureRequest对象 |
get(Key |
获取指定Key对应的Value |
getPhysicalCameraKey(Key |
获取指定Physical Camera中Key对应的Value值 |
removeTarget(Surface outputTarget) | 删除一路输出流 |
CaptureRequest Template type介绍
创建CaptureRequest.Builder
API | Description |
---|---|
createCaptureRequest(int templateType) | 根据Template Type创建CaptureRequest.Builder,注意:这里返回的是带一包默认值的,不同的CameraDevice,这包默认值会不一样,因此不能混用。 |
createCaptureRequest(int templateType, Set |
根据Template Type和Physical CameraID Set创建CaptureRequest.Builder,通过Builder#setPhysicalCameraKey可以设置指定Physical Camera的参数。 Physical Camera的参数只适用于有Physical Camera OutputConfiguration的情况(OutputConfiguration#setPhysicalCameraId)。 physicalCameraIdSet来自CameraCharacteristics#getPhysicalCameraIds() |
createReprocessCaptureRequest (TotalCaptureResult inputResult) | 根据TotalCaptureResult创建用于Reprocess的CaptureRequest.Builder |
如何设置Physical Camera的CaptureRequest
-
判断能否单独控制Logical MultiCamera中的Physical Camera
(CameraCharacteristics#getPhysicalCameraIds) -
或者可以设置的Physical Camera Keys
(Cameracharacteristics#getAvailablePhysicalCameraRequestKeys) -
创建Physical Camera OutputConfiguration
(OutputConfiguration#setPhysicalCameraId) -
创建CaptureRequest.Builder
-
setPhysicalCameraKey
-
addTarget
-
获取Physical TotalCaptureResult
(TotalCaptureResult#getPhysicalCameraTotalResults )