在onPreviewFrame上跳过帧(byte []数据,相机相机)

时间:2014-06-13 11:01:00

标签: android android-camera surfaceview surfaceholder

我想在Arraylist代码中保存帧,但问题是在捕获视频时帧正在跳过。 CameraArrray是arraylist,ModelFrameProcess是模型类,它接受字节数组并保存到arraylist中。 我已将帧率固定为15。

@Override
        public void onPreviewFrame(byte[] data, Camera camera) {

                 CameraArray.add(new ModelFrameProcess(data));
}

有时帧速率下降到6,有时需要超过20帧。 任何帮助?

1 个答案:

答案 0 :(得分:1)

要获得最佳帧速率,应避免垃圾回收。在获取期间不应进行任何分配(new)。

您可以使用Camera.setPreviewCallbackWithBuffer(),但这需要将帧数据的副本放在一边,您不应该在回调中收到数据bytearray的ArrayList。

通常,回调发生在主(UI)线程上。这可能会导致帧速率不稳定。要将回调推离UI线程,您应该使用eventLoop