1
如何知道队列中当前的回调数量?Android摄像头获取队列的回调缓冲区长度
有时计数会下降到1回调,我只能得到每秒2帧。
设置:
private void setupCallback(int bufferSize)
{
mCamera.setPreviewCallbackWithBuffer(this);
for (int i = 0; i <= NUM_BUFFERS; ++i)
{
byte[] cameraBuffer = new byte[bufferSize];
mCamera.addCallbackBuffer(cameraBuffer);
}
}
@Override
public void onPreviewFrame(byte[] data, Camera camera)
{
processFrame(data);
camera.addCallbackBuffer(data);
}
登录表示:
d /相机-JNI:使用回调缓冲从长度的队列4
但有时用相同的代码,它说:
D/Ca mera-JNI:使用长度为1的队列中的回调缓冲区
我怎么知道出现了问题并重置了这些缓冲区?
processFrame只需要15ms。我怀疑在这段时间内,预览帧会拍摄3-4次。你能告诉我,如果以前仍在处理中,onPreviewFrame会发生什么? –
我添加了关于默认线程的注释。你在调用'Camera.open()'什么线程?主线程上的 – szym
。我发现问题是什么。但它没有解决这个问题。 UI逻辑抛出了一个异常,在这个异常中除了1个onPreviewCallbacks被占用。所以制作另一个线程并不能解决问题。如果通话间的时间太长,我决定重新设置回拨。 –