android - 从相机预览中丢帧

标签 android android-camera

我正在使用 Camera 1,我知道我获得了支持的帧速率范围并设置了该帧。但是我希望预览以非常低的帧速率(即每秒 5 帧)显示。

我无法设置它,因为它低于任何范围。有没有办法可以从预览中删除某些帧?如果 setPreviewCallbackwithbuffer 然后我得到框架,但此时它已经显示。我可以从预览中“跳帧”吗?

谢谢

最佳答案

不可以,您不能干预预览表面上的框架。如果您使用 TextureSurface 进行预览,您可以做一些技巧,但如果您需要非常低的帧速率,您可以自己简单地绘制帧(最好是绘制到 OpenGL 纹理)。您将在 onPreveiewFrame() 中获得 YUV 帧回调,并在需要时将它们传递给显示。您可以使用着色器来显示 YUV 帧,而无需占用 CPU 将它们转换为 RGB。

通常,我们想跳过预览帧,因为我们想在帧上运行一些 CV 算法,并且通常我们想显示经过此类 CV 处理修改的帧,例如带有检测到的物体的边界框。即使您将框的坐标放在一边,并希望“按原样”显示预览帧,使用您自己的渲染器的优点是图片和叠加层之间不会有时间延迟。

关于android - 从相机预览中丢帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57839677/

相关文章:

java - 不幸的是, "app name here"已停止 - 按照教程

javascript - Web 和移动设备的用户名文本字段不允许使用空格字符

android - android listview 中的复选框有问题

android - 相机的 SurfaceView 与 TextureView?

Android:使用相机 Intent 拍照并将其保存到 java.io.File

opencv - Droidcam未连接到OpenCV

java - 谁有资料如何使用人脸检测相机 2 API?

android - 将抽屉导航添加到现有的 Android 谷歌地图

java - 如何通过以编程方式提供 SELECTALL CHECKBOX 来检查多选警报框中的所有项目

java - 权限拒绝 : starting Intent { act=android. media.action.IMAGE_CAPTURE cmp=android/com.android.internal.app.ResolverActivity }