相关疑难解决方法(0)

Android camera2捕获突发太慢了

我试图修改android-Camera2Basic代码来捕获一连串的图片.但是,在运行L 5.0.1的Nexus 5上,我无法在200-300ms之间获得图片之间的延迟.

我尝试了很多东西,但这是最基本的.这是我修改过的Camera2Basic代码的唯一部分.我的预览TextureView只有50x50dp,但这不重要,对吧?

对于它的价值,这段代码在我的Nexus 6上只有50-100ms的延迟,L 5.1.

private void captureStillPicture() {
    try {
        List<CaptureRequest> captureList = new ArrayList<CaptureRequest>();
        mPreviewRequestBuilder.addTarget(mImageReader.getSurface());

        for (int i=0;i<10;i++) {
            captureList.add(mPreviewRequestBuilder.build());
        }

        mCaptureSession.stopRepeating();
        mCaptureSession.captureBurst(captureList, cameraCaptureCallback, null);
        mPreviewRequestBuilder.removeTarget(mImageReader.getSurface());
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

CameraCaptureSession.CaptureCallback cameraCaptureCallback = new CameraCaptureSession.CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
            TotalCaptureResult result) {
        Log.d("camera","saved");
        mPictureCounter++;
        if (mPictureCounter >= 10)
            unlockFocus();
    }
};
Run Code Online (Sandbox Code Playgroud)

java android android-camera android-5.0-lollipop

12
推荐指数
2
解决办法
1万
查看次数

如何保存 YUV_420_888 图像?

我使用 camera2 API 构建了自己的相机应用程序。我从示例“ camera2Raw ”开始,并添加了 YUV_420_888 支持而不是 JPEG。但现在我想知道如何将图像保存在 ImageSaver 中!?

这是我的 run 方法的代码:

@Override
    public void run() {
        boolean success = false;
        int format = mImage.getFormat();
        switch(format) {
            case ImageFormat.RAW_SENSOR:{
                DngCreator dngCreator = new DngCreator(mCharacteristics, mCaptureResult);
                FileOutputStream output = null;
                try {
                    output = new FileOutputStream(mFile);
                    dngCreator.writeImage(output, mImage);
                    success = true;
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    mImage.close();
                    closeOutput(output);
                }
                break;
            }
            case ImageFormat.YUV_420_888:{
                ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
                byte[] bytes = new byte[buffer.remaining()];
                buffer.get(bytes);
                FileOutputStream output …
Run Code Online (Sandbox Code Playgroud)

android android-camera

4
推荐指数
1
解决办法
1万
查看次数