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 视频

如何使用Android中的Camera2 API在不预览的情况下拍摄多张照片?

使用camera2 API无需预览即可捕获图片

Camera2 API预览方面已损坏

如何在 Android Studio 2019 中捕获图片而不进行预览