매초마다 카메라 미리보기에서 스크린 샷을 찍고 싶습니다.매초 SurfaceView의 프레임을 얻는 방법은 무엇입니까?
SurfaceView를 사용하여 카메라 미리보기를 보여줍니다. 나는 초당 미리보기 (스크린 샷)를 받아야하지만 사진 찍기는 사용하지 않아야한다.
나는 방법 mCamera.setPreviewCallbackWithBuffer
에 대해 알고 있지만 프레임 하나만 가져갈 수 있습니다. 매 초마다 업데이트되도록하려면 MediaRecorder
을 시작하고 비디오를 녹화해야합니다. 그러나 비디오의 경우 많은 메모리를 사용할 수 있다는 것을 의미하는 outputFile
을 설정해야합니다.
mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
YuvImage yuv = new YuvImage(data, parameters.getPreviewFormat(), width, height, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
yuv.compressToJpeg(new Rect(0, 0, width, height), 50, out);
byte[] bytes = out.toByteArray();
final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
});
출력 파일을 설정하고 매 순간 사진을 찍지 않고 어떻게 할 수 있습니까?