Android Camera2 API:捕获视频而不预览
Posted
技术标签:
【中文标题】Android Camera2 API:捕获视频而不预览【英文标题】:Android Camera2 API : Capture video without preview 【发布时间】:2020-04-06 19:14:38 【问题描述】:主要问题:如何使用 Camera2 API 在不预览的情况下捕获视频?
我正在尝试从后台服务录制视频而不显示任何预览。
这里是 question 询问的相同,但我想用 Camera2 API 来做。
我在Camera2VideoJava 中找到了一个示例代码,并尝试在服务中使用它。
我现在无法理解该怎么做,因为没有文档可以做这样的事情。
有人可以帮忙吗?
【问题讨论】:
分享你的代码 这是我正在使用的示例:github.com/android/camera-samples/tree/master/Camera2VideoJava 我没有收到错误,但我想像 this way 那样使用 Camera2 API。 查看此相机文章developer.android.com/guide/topics/media/camera#capture-video 我已经做了这件事,但我想在不显示预览的情况下做。 @GunduBandgar 据我记得,您甚至可以进行 1x1 像素的预览并将其与另一个视图重叠。 【参考方案1】:只需从会话创建和重复请求中删除预览视图。只保留 MediaRecorder 中的 Surface。
但是,请注意,从 Android 9 Pie 开始,后台服务将无法使用摄像头;你至少需要一个前台服务。
【讨论】:
试图做这件事。没有预览它不起作用。你能分享一些代码吗?【参考方案2】:这似乎是捕捉4K视频的方法,但我自己没有测试过。
如果您使用 1080p 的预览,则捕捉将是 1080p;这是我的理解。
您必须在没有预览表面的情况下以 4K 进行捕捉,和/或使用 4K 分辨率的 GLSurfaceView。
4K GLSurfaceView 的问题在于它需要 OpenGL ES 3.0,而许多设备不支持。
可能有一种方法可以将 4K 缓冲区传递到 1080p 表面进行预览,同时还捕获 4K,但目前尚不清楚。
大多数 Camera2 API 开发人员的主要问题和焦虑是 OpenGL ES 3.0 无法在大多数设备上运行,即使相机本身支持 4K 视频。
【讨论】:
以上是关于Android Camera2 API:捕获视频而不预览的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 Android Camera2 API 捕获图像时出错:CaptureRequest 包含未配置的输入/输出表面
使用 Camera2(Android 版本 21)API 录制 60fps 视频