私は毎秒カメラプレビューからスクリーンショットを撮りたいです。毎秒SurfaceViewのフレームを取得するには?
私はSurfaceViewを使用してカメラのプレビューを表示します。私は毎秒プレビュー(スクリーンショット)を取得する必要がありますが、写真撮影は使用しません。
私は方法mCamera.setPreviewCallbackWithBuffer
について知っていますが、フレームから1回だけ取ることができます。それを毎秒更新するには、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);
}
});
出力ファイルを設定せずに写真を撮るにはどうすればよいですか?