我想在Arraylist代码中保存帧,但问题是在捕获视频时帧正在跳过。 CameraArrray是arraylist,ModelFrameProcess是模型类,它接受字节数组并保存到arraylist中。 我已将帧率固定为15。
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
CameraArray.add(new ModelFrameProcess(data));
}
有时帧速率下降到6,有时需要超过20帧。 任何帮助?
答案 0 :(得分:1)
要获得最佳帧速率,应避免垃圾回收。在获取期间不应进行任何分配(new
)。
您可以使用Camera.setPreviewCallbackWithBuffer(),但这需要将帧数据的副本放在一边,您不应该在回调中收到数据bytearray的ArrayList。
通常,回调发生在主(UI)线程上。这可能会导致帧速率不稳定。要将回调推离UI线程,您应该使用eventLoop。