如何在Android中使用Camera2 API以编程方式录制视频时拍摄照片 [英] How to programmatically take Photos while recording Video using Camera2 API in Android

查看:65
本文介绍了如何在Android中使用Camera2 API以编程方式录制视频时拍摄照片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在使用 camera2 API 录制视频时捕获图像.

I want to capture image while recording video using camera2 API.

有两个单独的演示可用.1. 捕捉图像和2. 录制视频

Two separate demos are available. 1. To capture image and 2. To record video

我尝试将它们合并为一个应用程序.但在很多事情上很困惑.喜欢

I tried to combine them into one app. But confused in many things. Like

  • CameraDevice 是单一的,表示连接到 Android 设备的单个摄像头.
  • 请求中需要不同的模板.对于图像:mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 和对于视频 mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
  • 在 createCaptureSession 方法中,需要 ImageReader 的表面,对于视频则需要 MediaRecorder.

图像和视频的 createCaptureSession 方法都需要 CameraCaptureSession.StateCallback.

CameraCaptureSession.StateCallback is needed in createCaptureSession method for both image and video.

camera2 API 是新的.因此,Google 上没有更多示例.

And camera2 APIs are new. So no more examples available on Google.

有人对此有任何想法吗?喜欢如何在android中录制时拍摄照片?

Anyone has any idea about this? like how to capture photo while recording in android?

推荐答案

对于 camera2 API 和视频快照,您需要稍微改进 camera2video 示例.

For camera2 API, and video snapshots, you'll need to improve the camera2video sample somewhat.

  • 3 捕获目标表面:预览(TextureView 或 SurfaceView)、JPEG(ImageReader)和记录(MediaRecorder 或 MediaCodec).
  • 将所有三个的表面传递给 createCaptureSession
  • 不录制视频时,将重复请求设置为仅针对预览
  • 在录制视频时,将重复请求设置为同时针对预览和录制 Surface,并启动 mediarecorder(如 camera2video 所做的那样);停止录制时切换回重复请求中的仅定位预览.
  • 当您想要拍照时,发出单个 capture() 调用,并针对 JPEG 表面、预览表面以及录制表面(如果录制处于活动状态)发出请求.
  • 当其 onImageAvailable 回调触发时,从 ImageReader 获取 JPEG.

这篇关于如何在Android中使用Camera2 API以编程方式录制视频时拍摄照片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆