Skip to content

CameraCapture

buliaoyin edited this page Nov 22, 2017 · 1 revision

摄像头采集模块

CameraCapture 类基于Android的Camera接口实现了视频采集功能,输出Texture或NV12格式的图像数据。

1. Pin接口

CameraCapture 包含两个SrcPin, 一个Frame格式为ImgTexFrame, 一个为ImgBufFrame.

/**
 * 实现输出类型为ImgTexFrame的SrcPin, 以实现Texture图像的输出.
 */
public SrcPin<ImgTexFrame> getImgTexSrcPin();

/**
 * 实现输出类型为ImgBufFrame的SrcPin, 以实现buffer图像数据的输出.
 */
public SrcPin<ImgBufFrame> getImgBufSrcPin();

2. 参数配置接口

/**
 * 配置视频采集分辨率.
 */
public void setPreviewSize(int width, int height);

/**
 * 配置采集帧率.
 */
public void setPreviewFps(float fps) {
    mPresetPreviewFps = fps;
}

/**
 * 配置采集预览的方向
 * @param degrees the rotate degrees of current Activity.<br/>
 *                Acceptable value: 0, 90, 180, 270,
 *                other values will be ignored.<br/>
 *                Default value is 0.
 */
public void setOrientation(int degrees);

3. 控制接口

/**
 * 开始采集, 为异步接口。
 */
public void start();

/**
 * 停止采集, 为同步接口,调用返回后既完全释放Camera实例。
 */
public void stop();

/**
 * 释放其他相关资源
 */
public void release();

4. 自定义Camera参数

该模块同时提供了自定义Camera参数的能力,方便开发者的进阶需求。
开发者可以使用该功能实现诸如:手动对焦、zoom、曝光补偿、防闪烁等Android Camera系统API所提供的功能。

/**
 * Get parameters of current camera.<br/>
 * Should be called on state {@link #CAMERA_STATE_PREVIEWING}.
 *
 * @return Camera parameters instance or null on invalid state.
 */
public Camera.Parameters getCameraParameters();

/**
 * Set new parameters to current camera.<br/>
 * Should be called on state {@link #CAMERA_STATE_PREVIEWING}.
 *
 * @param parameters Camera parameters to be set.
 * @return true on success, false otherwise.
 */
public boolean setCameraParameters(Camera.Parameters parameters);

/**
 * Starts camera auto-focus and registers a callback function to run
 * when the camera is focused.<br/>
 * Should be called on state {@link #CAMERA_STATE_PREVIEWING}.
 *
 * @param cb the callback to run
 */
public void autoFocus(Camera.AutoFocusCallback cb);

/**
 * Cancels any auto-focus function in progress.Whether or not auto-focus is currently
 * in progress,this function will return the focus position to the default.
 * If the camera does not support auto-focus, this is a no-op.<br/>
 * Should be called on state {@link #CAMERA_STATE_PREVIEWING}.
 */
public void cancelAutoFocus();
实现方式:
  1. 使用getCameraParameters()获取当前Camera的Camera.Parameters;

  2. 根据需求操作获取的Camera.Parameters;

  3. 使用setCameraParameters()将更改后的Camera.Parameters设置给Camera实例.

Note
其中CameraCapture的get/setCameraParameters是Android Camera系统API的一个封装,仅仅做了一些异常保护工作, 开发者可以可以参照系统的Camera API来实现自定义功能。

如果将Camera的对焦模式设置为FOCUS_MODE_AUTO,则可以通过mStreamer.getCameraCapture().autoFocus()方法启动对焦过程, 通过mStreamer.getCameraCapture().cancelAutoFocus()方法取消对焦,分别对应于Android Camera对象的autoFocus和 cancelAutoFocus方法。

1. 集成指南

2. 基本功能

2.1 采集

2.2 视频处理

2.3 音频处理

3. 开放接口定义

Clone this wiki locally