相关疑难解决方法(0)

如何在Android中以至少每秒15帧的速度从Camera对象获取原始预览数据?

我需要从Camera对象获得至少每秒15帧的原始预览数据,但我只能在110毫秒内获得一帧,这意味着我每秒只能获得9帧.我在下面简要介绍一下代码

Camera mCamera = Camera.open();
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewFrameRate(30);
parameters.setPreviewFpsRange(15000,30000);
mCamera.setParameters(parameters);
mCamera.addCallbackBuffer(new byte[dataBufferSize]);
//dataBufferSize stands for the byte size for a picture frame
mCamera.addCallbackBuffer(new byte[dataBufferSize]);
mCamera.addCallbackBuffer(new byte[dataBufferSize]);
mCamera.setPreviewDisplay(videoCaptureViewHolder);
//videoCaptureViewHolder is a SurfaceHolder object
mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
  private long timestamp=0;
  public synchronized void onPreviewFrame(byte[] data, Camera camera) {
    Log.v("CameraTest","Time Gap = "+(System.currentTimeMillis()-timestamp));
    timestamp=System.currentTimeMillis();
    //do picture data process
    camera.addCallbackBuffer(data);
    return;
  }
}
mCamera.startPreview();
Run Code Online (Sandbox Code Playgroud)

在上面的简要代码中,dataBufferSize和videoCaptureViewHolder是在其他语句中定义和计算或分配的.

我运行我的代码,我可以看到屏幕上的预览,我得到下面的日志:

...
V/CameraTest( 5396): Time Gap = 105
V/CameraTest( 5396): Time Gap = 112
V/CameraTest( …
Run Code Online (Sandbox Code Playgroud)

camera android preview

30
推荐指数
2
解决办法
3万
查看次数

标签 统计

android ×1

camera ×1

preview ×1